activation d'une feuille avec vba

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.
 

Robert

XLDnaute Barbatruc
Repose en paix
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...
 

Dranreb

XLDnaute Barbatruc
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.
 

info009

XLDnaute Nouveau
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 :)
 

Discussions similaires

Réponses
6
Affichages
287

Statistiques des forums

Discussions
312 496
Messages
2 088 980
Membres
103 997
dernier inscrit
SET2A