Renommer feuilles MEP boucle vérification

Bonjour,

 

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!

 

Merci bien!

 

 

Sbier

 


renommer_onglets_popup_enregistrement_-_copie.swp

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.

Merci stefbeno.

 

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. ;)

Salut, tu peux mettre ton code dans un ficher txt stp ? (Pas de SolidWorks à disposition)

Et est ce que la macro bug à un endroit particulier ?

Sinon tu as mis des espions sur les différentes variables pour où ça bloquait ?

Bonjour, 

Vous trouverez ci-joint le texte de ma macro.

 

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.


macro_copie.txt

Bonjour,

 

Pas d'idée d'où provient le problème?

 

Merci par avance,

1 « J'aime »

En fait, à mon avis ta ligne :

Do Until Nouveau_nom_feuille <> strSheetName(j) And Nouveau_nom_feuille <> ""

devrait être plutôt :

Do Until (Nouveau_nom_feuille = strSheetName(j)) OR (Nouveau_nom_feuille = "")

Car si le nom EST vide OU si le nom EST le même qu'une autre, tu dois relancer ton inputbox, n'est-ce pas ?

 

 

 

Bonjour!

 

Meric pour avoir corrigfé cette erreure!

 

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..


macro_copie_v2.txt

C'est normal qu'il te le demande deux fois, c'est comme ça dans ton code !

Il faudrait enlever le premier (met le en commentaire avec un apostrophe pour tester) :

Nouveau_nom_feuille = InputBox(....

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..

Ok  dommage !

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 !

Merci, bonne journée.