VBA : travail sur 2 classeurs en même temps

PlugNplay

XLDnaute Nouveau
Bonjour !

J'ai un petit souci assez urgent à résoudre...

J'ai un bon niveau en VBA Excel, mais j'ai un de mes programmes qui s'exécute d'une façon que je ne comprends pas.


Contexte :

J'ai un classeur qui, pour se remplir, doit faire appel à un autre classeur.
Donc au début de ma macro, je déclare et j'affecte mes deux classeurs :
Code:
Dim Actif As Workbook   'Mon classeur
DimMacro As Workbook   'L'autre classeur 

Set Actif = ThisWorkbook
Set Macro = Workbooks("Macro débitance 3.xls")

Le début de mon programme se présente ensuite de cette façon :
Code:
i = 4

While Range("A" & i) <> ""
    Actif.Activate
    Qusine = Cells(i, 2)
    ...

Suivent beaucoup d'instructions, puis je termine mon programme par :
Code:
    ...
    i = i + 1
Wend

Macro.Close False

End Sub


Problème :

Avant de lancer mon programme, j'ouvre le classeur Macro.

Ensuite, si je lance l'exécution directement, il ne se passe rien, à part que le classeur Macro est fermé à la fin ; mais le corps de mon programme ne semble pas s'exécuter.

Avec une exécution en pas à pas, il se passe une chose étrange : lorsque j'exécute la ligne
Code:
While Range("A" & i) <> ""
qui est au début de mon code, au lieu de rentrer dans le While l'exécution saute directement à la ligne de fermeture du classeur Macro, puis il sort. Il ne passe même pas par le Wend.
J'ai vérifié, la cellule "A" & i n'est pas vide.

Je ne comprends pas :confused:
Le programme réagit de la même façon si je lui dis d'ouvrir lui même l'autre classeur
(Set Macro = ThisWorkbook.Path & "\Macro débitance 3.xls"


Pouvez-vous m'aider ?

Merci d'avance.
 

bond

XLDnaute Occasionnel
Re : VBA : travail sur 2 classeurs en même temps

Si comme tu le dit
Avant de lancer mon programme, j'ouvre le classeur Macro.

Ensuite, si je lance l'exécution directement
alors ThisWorbook correspond à la macro et non au fichier Actif voulu.

ou alors il faut que tu mettes
Actif.Activate
avant la boucle while, et après i=1+1
 
Dernière édition:

PlugNplay

XLDnaute Nouveau
Re : VBA : travail sur 2 classeurs en même temps

Mmh... Non, ce n'est pas le problème, parce que mon programme est rédigé dans le classeur Actif. Donc ThisWorkbook renvoie toujours à Actif.
J'ai quand même vérifié, effectivement ThisWorkbook correspond à Actif tout le long de l'exécution.
 
G

Guest

Guest
Re : VBA : travail sur 2 classeurs en même temps

bonjour,

alors il faut explicitement faire référence au classeur et à la feuille dans:
Code:
Do While LeClasseur.Sheets("LaFeuille").Range("A" & i)<>""

Mais plutôt que de référencer les classeurs peut-être serait-il préférable de référencer les Feuilles. D'autant plus que la feuille active de l'un ou l'autre peut changer.

Code:
Dim Sh1 as WorkSheet, Sh2 as WorkSheet
Set Sh1=ThisWorkBook.Sheets("UneFeuille")
Set Sh2=Workbooks("AutreClasseur").Sheets("AutreFeuille")
 
Do While Sh1.Range("A" & I) <>""

A+
 

PlugNplay

XLDnaute Nouveau
Re : VBA : travail sur 2 classeurs en même temps

Merci beaucoup pour vos réponses !!

Je viens enfin de trouver pourquoi ça ne marchait pas :)
En fait, j'ai voulu exécuter mon programme et tout d'un coup il a fonctionné normalement, il est rentré dans le While etc. alors que ça faisait une semaine qu'il plantait systématiquement !

Du coup j'ai voulu tester la réponse de Hasco et pendant l'exécution j'ai interrogé la fenêtre exécution (celle qu'on a par Ctrl+G)
C'est là que je me suis rendue compte que ThisWorkbook pointait effectivement sur Actif, mais que mon classeur et ma feuille actifs, eux, correspondaient au classeur Macro.
Or, la cellule A1 de Macro est vide...

Encore merci !!!
Je vais préciser mes instructions, à partir de maintenant ;) !
 

Discussions similaires

Réponses
24
Affichages
483
Réponses
6
Affichages
267

Statistiques des forums

Discussions
312 373
Messages
2 087 724
Membres
103 654
dernier inscrit
kingdz2022