Bonjour à tous,
J'ai bien cherché pendant quelques heures mais je n'ai trouvé aucun réponse à ce sujet. Mon problème est simple :
J'ai une macro principale qui fait appel à d'autre macros dans le même module, 6 pour etre exact. Elles me servent à fractionner ma procédure, à mieux l'organiser, et à rendre les étapes plus compréhensibles. Sur ces 6 procédures, 4 contiennent des "If" du style :
Si la valeur de cette cellule est égale à ca alors la valeur de celle ci est égale à ca, sinon blablabla.
Je n'ai aucun problème pour apeller ces 6 procédures (Avec "Call") mais seules les 2 qui ne contiennent aucun "If" fonctionnent correctement et font le travail demandé. Pour les 4 autres, j'ai regardé en pas à pas ce qui bloquait, et il s'avère que la macro saute directement à la prochaine étape lorsqu'elle rencontre un "If" quelque soit ce qu'il y a aprés (si la sous procédure commence par "If", qu'elle fasse 2 lignes ou 50, c'est pareil la suite est automatiquement sautée).
De plus toutes les variables utilisées sont déclarés en Public donc pas de problèmes à ce niveau la normalement surtout qu'elles sont bien prises en compte pour les 2 sous procédures ne commencant pas par "If"
Pour être plus concret, voici un partie de mon code :
Le bout de mon code principal en question :
Process1 marche trés bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Do Until i = linecount Call Process1 Call Process2 i = i + 1 j = j + 1 Loop
Process2 qui me pose problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Process1 () For x = 1 To 9 Workbooks(XLBook1).Worksheets("Template AMF").Cells(j, ColumnAMFColl(x)).Value = _ Workbooks(XLBook2).Worksheets("Trades").Cells(i, ColumnBOColl(x)).Value Next x End Sub
Process1 marche donc correctement alors que Process 2 est executé mais rien ne se passe, quand la macro rentre dedans et s'attaque au "If", elle revient immédiatement au code principale en executant la suite à savoir i = i + 1 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Process2 () If Workbooks(XLBook2).Worksheets("Trades").Cells(i, ColumnBOColl(10)).Value = "SGLB" Or "SGAS" Then _ Workbooks(XLBook1).Worksheets("Template AMF").Cells(j, ColumnAMFColl(10)).Value = "90120" End Sub
Auriez vous une idée pour résoudre ce problème ? Merci beaucoup par avance !
Partager