J'ai finalement réussi à faire marcher mon code sur un fichier de tests et je veux le transférer sur mon vrai fichier.
Voici le bout de code qui me pose problème dès le début dans le vrai fichier (mais pas dans le fichier de tests).
VB:
For Each Fmois In ThisWorkbook.Worksheets
If Fmois.Name = Vmoislettres Then 'Vmoislettres est "janvier"
Worksheets(Vmoislettres).Activate
Call noms
Fairelessommes Fmois
ElseIf Fmois.Name = VmoisprochainLettres Then 'Vmoisprochainlettres est "février"
Worksheets(VmoisprochainLettres).Activate
Call noms
Fairelessommes Fmois
End If
Next Fmois
Il plante et sort de la sub car le premier Fmois qu'il reconnaît est "Feuill1". Or, je n'ai PAS de Feuil1 dans mon classeur, elle n'est pas masquée et si je regarde dans le projet VBA elle n'existe pas non plus (elle aurait pu être en xlsheetveryhidden).
En revanche, si j'insère une feuille en première position dans mon classeur de test effectivement ça fait planter la macro, donc c'est bien la présence d'une feuille en première position qui pose problème....
Comment supprimer cette feuil1 fantôme, ou pourquoi apparaît-elle ?
PS : je précise que si j'insère la ligne Worksheets(1).Activate, ça m'active bien la feuille janvier, ma première feuille sur laquelle je veux travailler !
Pardon, mais ton explication ne me semble pas trop tenir la route...
Juste un exemple : "Il plante et sort de la sub car le premier Fmois qu'il reconnaît est "Feuill1"." ne veut pas dire grand chose.
- Qui reconnait la feuille "Feuill1" ?
- Que veut dire "reconnaître" une feuille ?
- Comment sais-tu que cette feuille est "reconnue" ?
- Etc.
VB:
For Each Fmois In ThisWorkbook.Worksheets
If Fmois.Name = Vmoislettres Then 'Vmoislettres est "janvier"
Worksheets(Vmoislettres).Activate
Call noms
Fairelessommes Fmois
ElseIf Fmois.Name = VmoisprochainLettres Then 'Vmoisprochainlettres est "février"
Worksheets(VmoisprochainLettres).Activate
Call noms
Fairelessommes Fmois
End If
Next Fmois
Lorsque je fais un pas-à-pas (F8) et que je survole Fmois, je vois qu'il contient Feuil1....Comme cela ne correspond pas à janvier ou février, ça saute directement à end sub (ce qui n'est pas normal, j'en conviens)
Ton classeur n'a qu'une seule feuille, qui se nomme "Feuil1", donc tout est normal en fait : elle ne s'appelle pas "janvier" ni "février", et du coup la macro saute directement à End Sub.
Si, mon classeur a bien plusieurs feuilles, dont janvier et février (et d'autres), mais PAS de feuill1. Le seul truc que je vois c'est cette feuill1 dans mon personal.xlsb et qui poserait problème (mais je ne peux pas la supprimer).
PS : C'est bien cette feuille qui pose problème, car je l'ai renommée et c'est bien elle qui apparaît quand je survole mon code...
Si, mon classeur a bien plusieurs feuilles, dont janvier et février (et d'autres), mais PAS de feuill1. Le seul truc que je vois c'est cette feuill1 dans mon personal.xlsb et qui poserait problème (mais je ne peux pas la supprimer)
Merci du temps passé...je ne vois pas trop comment tu peux voir que mon classeur n'a qu'une feuille mais bon...Je travaille sur 2023.xlsm qui a plusieurs feuilles avec des macros dans personal.xlsb....2023 a plusieurs feuilles et personal.xlsb a cette feuille (que j'ai renommée modulo) qui pose problème...
Ben non, je ne comprends pas, c'est peut-être pour ça que je sollicite le forum ! ;-), mais bon, si je remplace thisworkbook par activeworkbook, ça marche...
Dis-moi si je me trompe :
- ta macro se trouve dans le classeur PERSONNAL,
- ta macro utilise ThisWorkBook,
- donc ta macro travaille dans le classeur PERSONNAL qui n'a qu'une seule feuille.
J'ai bon ?
Si j'ai bon, alors il n'y a aucun fantôme dans le coup.
Pour info :
- ThisWorkbook fait référence au classeur dans lequel se trouve l'instruction ThisWorkbook rencontrée.
- ActiveWorkbook fait référence au classeur qui est actif quand est rencontrée l'instruction ActiveWorbook.