problème vba, boucle ne fonctionne pas

  • Initiateur de la discussion Initiateur de la discussion grodep
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

grodep

XLDnaute Occasionnel
bonjour à tous, je suis perplexe devant les réactions bizarres d'excel :
si je pose ce bout de code dans un fichier vierge
Code:
With ThisWorkbook
vry = Array("prévi", "vols", "sols", "recap")
    For i = 1 To 4
      Sheets.Add After:=Sheets(Sheets.Count)
      Sheets(Sheets.Count).Name = vry(i)
      If Sheets(Sheets.Count).Name = "prévi" Or Sheets(Sheets.Count).Name = "vols" Then
      Set sh = ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)
           With sh.CodeModule
            .InsertLines x + 1, "Private Sub Worksheet_Activate() 'à l'activation de l'onglet"
            .InsertLines x + 2, "Dim cel As Range 'déclare la variable cel (CELlule)"
            .InsertLines x + 3, "For Each cel In Range(""A1:"" & Range(""IV1"").End(xlToLeft).Address)" 'boucle sur toutes les cellules éditées cel de la ligne 2
            .InsertLines x + 4, "If cel.Value = Date Then" 'condition : si la valeur de la cellule est égale à la date du jour
            .InsertLines x + 5, "cel.Select" 'sélectionne la cellule
            .InsertLines x + 6, "Exit For" 'sort de la boucle
            .InsertLines x + 7, "End If" 'fin de la condition
            .InsertLines x + 8, "Next cel" 'prochaine cellule de la boucle
            .InsertLines x + 9, "End Sub"
        End With
        End If
    Next i
End With
dans lequel j'aurai au préalable renommer une des feuilles "stage" et l'autre "listvol", le code fonctionne sans aucun problème.
Malhreuseument, dans le fichier qui m'intéresse(je le joins par ci-joint, je ne peux pas le réduite à la bonne taille Cijoint.fr - Service gratuit de dépôt de fichiers), cela ne fonctionne pas comme je l'entends: je lance le code par le biais du bouton "initialiser", après confirmation, il m'envoie une erreur d'exécution '9', l'indice n'appartient pas à la séletion, je clike sur débogage, la ligne
Code:
Set sh = ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)
est en surbrillance.
Et là, si au lieu de cliquer sur le bouton stop, je clique sur le bouton continuer(F5), le code recommence à s'exécuter, et fonctionne très bien! Je n'arrive pas à débrouiller ce problème.
Encore plus déroutant(à moins qu'au contraire, cela fournisse une piste aux aficionados!!) : si je clique sur "initialiser" alors que la fenêtre d'édition est ouverte, le code s'exécute sans souci!! Si je ferme la fenêtre, il bloque de nouveau à cette même étape... A n'y rien comprendre 🙁

je le joins également en format xls :Cijoint.fr - Service gratuit de dépôt de fichiers

Merci à toutes les bonnes âmes
 
Re : problème vba, boucle ne fonctionne pas

Bonjour Grodep

quelques remarques au passage, pourquoi un bloc "with thisworkbook", alors que sauf erreur de ma part aucune instruction n'y ait appliquée...

D'autre part toutes les instructions dont le nom du classeur n'est pas précisé, s'appliqueront au classeur actif.

modifie peut être l'instruction ci-dessous :

Code:
Set sh = ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName)

par :

Code:
Set sh = ActiveWorkbook.VBProject.VBComponents([COLOR="Red"][B]ActiveWorkbook.[/B][/COLOR]ActiveSheet.CodeName)

pas sur que cela résolve ton problème, mais essaye tout de même...

@+
 
Re : problème vba, boucle ne fonctionne pas

bonjour Grodep,Pierrot
la ligne suivante crée un tableau indices 0 to 3
vry = Array("prévi", "vols", "sols", "recap")
la boucle devient
For i = 0 To 3
ajoute un point devant les sheets(nbre =8) qui se rapportent à thisworbbook
à bientôt
 
Re : problème vba, boucle ne fonctionne pas

bonjour bebere, et au temps pour moi, j'ai oublié de préciser que mon fichier est en option base 1, d'ou la boucle for i=1 to 4.
Je n'arrive pas à saisir ce que tu entends par "ajoute un point devant les sheets(nbre =8)..."
 
Re : problème vba, boucle ne fonctionne pas

ok, effectivement, ç'était mal écrit, merci pour la correction.
Cela étant, unfortunately, ça ne résout pas mon problème. Ce qui m'intrigue vraiment, c'est que le code ne s'interrompt pas si ma fenetre VBE est ouverte, quel rapport???
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
7
Affichages
324
Réponses
3
Affichages
665
Retour