Activer une feuille

Bonsoir,

Je manipule un fichier excel composé de plusieurs feuilles à partir d'un autre fichier excel. Chacune des feuilles représente les mois de l'année, sauf l'une d'entre elles nommée "Total" (de l'année en cours).

Après avoir ouvert le fichier en question, j'ai commencé par sélectionner l'une des feuilles (celle du mois en cours) via ces commandes (mois étant une variable préalablement définie renvoyant le nom du mois en cours):

fic = ActiveWorkbook.Name
ActiveWorkbook.Worksheets(mois).Activate
feu = ActiveSheet.Name

Jusque là tout va bien, feu = juin.

Suite à cela, j'ai écrit les instructions que je voulais, qui également se sont bien exécutées. Mais après, j'ai voulu sélectionner une autre feuille, à savoir "Total 2011". Et là ça coince, erreur à l'exécution (L'indice n'appartient pas à la sélection) avec les instructions suivantes (annee étant une variable renvoyant l'année en cours, testée dans d'autres cas avec succès):

ActiveWorkbook.Worksheets("Total " & annee).Activate
feu = ActiveSheet.Name

Où est l'erreur ?

Merci d'avance !

Bonsoir

Sans le code pas évident

des idées en vrac

Changes tu de fichier ?

Variable annee bien intialisée ?

Le nom de la page comportent des espaces supplémentaires ?

Fais un pas-à-pas et testes les valeurs

et ...... je ne sais plus

A suivre avec le code (minimum) où le fichier (mieux)

Alors, je ne change pas de fichier, la nouvelle feuille est sur le même fichier.

J'ai mis des espions, et la variable annee prend bien 2011 comme valeur, aucun souci de ce côté là.

J'ai également vérifié les espaces, il y en a un seul, entre "Total" et l'année.

Voici la partie de code intéressante (en faisant quelques tests j'ai l'impression qu'on est plus situé sur le bon classeur au moment de l'appel de la feuille, d'où l'erreur... mais je ne saisis pas pourquoi):

Workbooks.OpenText Filename:=Workbooks(fic).Sheets(feu).Range("A6").Value & "\gestion " & annee & ".xls", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False
 fic = ActiveWorkbook.Name
 ActiveWorkbook.Worksheets(mois).Activate
 feu = ActiveSheet.Name

 Workbooks(fic).Sheets(CStr(annee)).Activate
 nbcol = ActiveSheet.Cells.CurrentRegion.Columns.Count
 Sheets(CStr(annee)).Cells(1, 1).Resize(1, nbcol).Select

'champ 1 à traiter
 Set rech = Selection.Find(What:="champ_1", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
 If Not rech Is Nothing Then

 Sheets(CStr(annee)).Cells(mois + 1, rech.Column).Value = Workbooks(fic).Sheets(feu).Range("K45").Value

 End If

 'champ 2 à traiter
 Set rech = Selection.Find(What:="champ_2", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
 If Not rech Is Nothing Then

 Sheets(CStr(annee)).Cells(mois + 1, rech.Column).Value = Round(Workbooks(fic).Sheets(feu).Range("L45").Value, 2)

 End If

 fic = ActiveWorkbook.Name
 ActiveWorkbook.Worksheets("Total " & annee).Activate
 feu = ActiveSheet.Name

 Workbooks(fic).Close
End If

Bonjour

Bizarre

Sauf erreur de ma part voilà ce que j'en ai déduit

Déjà ta macro est incomplète, donc pas facile de la comprendre

Sinon après l'ouverture "OpenText" tu bascules sur le 2ème fichier

Tu redéfinies tes variables Fic et Feu

Tu traites tes informations : Ce qui m'intrigue la page Sheets(CStr(annee)) est dans quel classeur

ActiveWorkbook ou ThisWorkbook ?

Pourquoi après tu redéfinies tes variables Fic et Feu ?

Pas à ce moment qu'il manques du code ? (Il y a un End if sans son If)

Dans l'état actuel je ne vois pas ce qui cloche (manques trop de renseignements)

A suivre si tu veux

Bonjour Banzai64,

J'ai résolu le problème, mais je voulais t'en informer. En fait l'erreur venait du fait que la feuille n'était pas reconnue car le classeur actif n'était pas le bon. La ligne ci-dessous affectait à fic le classeur sur lequel je travaillais et non le classeur sur lequel j'allais récupérer mes données:

fic = ActiveWorkbook.Name

Désolé...

Rechercher des sujets similaires à "activer feuille"