Comme expliqué dans un précédent sujet, je suis en train de créer une macro pour renommer les feuilles Solidworks lors de l'enregistrement. Je pense que cela pourrait être aussi pratique pour certaines d'entre vous.
Je suis presque au bout ! Il me reste un seul beug.
Le principe :
La macro se lance à l’enregistrement (elle est contenue dans le Userform qui reste caché).
Si le nom de la feuille contient le mot "Feuille", un autre nom est demandé.
La macro doit vérifier que le nom donné à la feuille ne soit pas vide, et ne soit pas le même qu'une autre feuille (précédente ou suivante).
Pour vérifier que le nom n'est pas vide, pas de soucis, mais mon problème intervient au moment où il faut comparer que le nom ne soit pas identique à celui d'une autre feuille. Ça marche pour les feuilles précédentes mais pas toujours pour les suivantes. Par exemple, si l'on propose un nom vide puis le nom de la feuille suivante, l'inputbox ne se relance pas alors qu'elle devrait, jusqu’à ce que le nom proposé soit unique. En effet, si ce n’est pas le cas, la macro s’arrête et ne renomme pas la feuille.
Mon problème doit donc se situer au niveau de la boucle.
Si quelqu'un avait la solution miracle ça serait top!
je ne connais pas VBA donc je ne peux pas analyser votre code mais d'un point algoritme : en début d'éxécution, je créerai une liste des feuilles puuis je comparerais la réponse avec le contenu de la liste, liste qui est mise à jour lors de la validation du nom, et ainsi de suite pour les feuilles suivantes.
Je vais essayer de procéder autrement en utilisant votre idée mais cela me semble peu adapté puisqu'on ne connait pas le nombre de feuilles de départ. Il sera donc difficile de stocker leur nom s'il y en a beaucoup.
Si un connaisseur en VBA avait le temps d'y jeter un coup d'oeil. ;)
Oui elle beug au niveau d'une boucle que j'ai signalée en commentaire.
Celle-ci devrait comparer la valeur Nou_nom_feuille proposée par l'utilisateur au nom de feuilles déjà existants (les feuilles situées avant et après celle à renommer).
Et cela ne marche pas dans tous les cas, surtout si la feuille qui porte le même nom est située après celle à renommer.
Pour ma part, j'ai aussi du inverser le Do Until... Loop en Do... Loop Until car sinon ça ne fonctionnait pas.
La ca a l'air de quasiment marcher, je m'explique :
- il détecte lorsque la feuille contient le mot "Feuille".
- il me demande alors un autre nom
- Si le nom est le même que sur une autre feuille ou vide il me repose la question.
Le problème est que quand je mets un nom correct (pas vide et différent du nom des autres feuille), il le marque (au bout de la deuxieme fois) mais me redemande quand même un nom.
Je pens equ'il reste un sérieux soucis au niveau de la boucle, mais j'ai beau tenter plein de chose,s impossible à débeuguer...
Je remercie par avance s'il y a quelqu'un qui a le temps et la motivation d'essayer de trouver d'ou vient le soucis..
En fait je pensais que ma boucle fonctionnait (car l'Inputbox réapparaissait quand je donnais un om déjà existant) mais ça n'est pas le cas. C'est la condition pour vérifier si le nom proposé pour la feuille existe dééjà dans une autre feuille qui est obsolète. Ma boucle avec j ne marche pas du tout.
En tout cas merci encore pour votre aide mais je pense que je vais abandonner là car ça ne fonctionne pas..
Et de totue manière je n'arrive pas à lancer la macro au démarrage même avec la méthode du \m dans le racourci car cela ne lance pas la macro qui déclenche le userform..
Si j'ai aidé, merci de choisir une de mes réponses en cliquant dessous "marquer cette réponse comme meilleure réponse", ça me permet de gagner quelques points !