activation d'une feuille avec vba

  • Initiateur de la discussion Initiateur de la discussion info009
  • 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 !

info009

XLDnaute Nouveau
bonjour j'ai un petit probleme de debutant sur vba.

Je travail en meme temps sur deux classeurs, du coup, il y'a un qui est actuellement ouvert d'ou j’exécute le code, et un autre que j'ouvre à l'aide de vba.

Dim nom_feuil As String

Dim nbrcellule
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim classeurB As Variant
Dim ws1 As Worksheet
Set wb1 = Workbooks.Open(chemin1)
Set wb2 = ActiveWorkbook()
Set ws1 = Worksheets("Feuil1")
nbrcellule = 0
For Each cel In Range("A:A")
If cel > "" Then
nbrcellule = nbrcellule + 1
End If
Next cel
For i = 2 To nbrcellule
nom_feuil = ws1.Cells(i, 1)
wb2.Worksheets(nom_feuil).Activate
Next

Ce que j'essaie de faire c'est récuperer l'information dans une cellule se trouvant dans wb1, qui correspond à une feuille sur wb2, et l'ouvrir par la suite pour executer le suite du code qui viendra par la suite. Cette etape se repete autant de fois qu'il y'a de ligne sur wb1.

Mais une fois j'arrive à l'étape wb2.worksheets(nom_feuil).activate , j'ai une erreur "l'indice n'appartient pas à la selection", et je n'arrive pas à voir ou est l'erreur.


Merci.
 
Re : activation d'une feuille avec vba

Bonjour Info, bonjour le forum,

en faisant :
Code:
Set wb1 = Workbooks.Open(chemin1)
cela ouvre un classeur et l'active. si derrière tu fais :
Code:
Set wb2 = ActiveWorkbook()
tu te retrouves avec deux variables pour le même classeur. Bon c'est pas la réponse à ta question mais c'est étrange...

Je pense qu'à un moment donnée la cellule (i, 1) de l'onglet ws1 doit contenir une valeur qui n'est pas un nom d'onglet et ça plante...
 
Re : activation d'une feuille avec vba

Bonjour.

Même conclusion que Robert.
il y'a un qui est actuellement ouvert d'ou j’exécute le code
Celui ci est toujours représenté par ThisWorkbook, quel que soit le classeur actif. Vous n'avez donc pas besoin de variable pour celui là. Par ailleurs ses feuilles sont aussi connues directement de VBA sous le nom figurant dans la rubrique Microsoft Excel Objets à gauche du nom Excel de la feuille rappelé entre parenthèses. Ce sont directement des objets Worksheet. Votre erreur vient probablement de ce qu'un Workbooks.Open rend actif le classeur ouvert, et que Wb2 et Wb1 représentent donc le même classeur. Ça ne se produira plus si vous utilisez ThisWorkbook à la place de Wb2.
 
Re : activation d'une feuille avec vba

Bonjour Info, bonjour le forum,

en faisant :
Code:
Set wb1 = Workbooks.Open(chemin1)
cela ouvre un classeur et l'active. si derrière tu fais :
Code:
Set wb2 = ActiveWorkbook()
tu te retrouves avec deux variables pour le même classeur. Bon c'est pas la réponse à ta question mais c'est étrange...

Je pense qu'à un moment donnée la cellule (i, 1) de l'onglet ws1 doit contenir une valeur qui n'est pas un nom d'onglet et ça plante...

En inversant j'ai un message d'erreur aussi.

et je n'ai pas été au bout de la boucle for pour savoir si y'a un problème, je recevais une erreur dés la première boucle.

Merci 🙂
 
- 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

Réponses
6
Affichages
604
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
691
Réponses
7
Affichages
657
Réponses
9
Affichages
2 K
Retour