[VBA] Faire appel à une autre Sheet

Hello.

J'ai plusieurs sheets dans un seul fichier.

Ma première sheet (qui s'appelle "tableau") est :

Pierre
Amandine

Ma deuxième sheet est : extract_Pierre
Ma troisième sheest est : extract_Amandine

J'aimerais faire un truc du style :

Pour i allant de 2 à 100, la valeur de la case Cells(i,1) de la sheet extract_Pierre est injectée dans Cells(1,i) et la valeur de la case Cells(i,1) de la sheet extract_Amandine est injectée dans Cells(2,i)

J'ai tenté un truc :

Sub testencore()
    For i = 2 To 100
                Sheets("tableau").Cells(1,i).Value = Sheets("extract_"&Sheets("tableau").Cells(1,1).Value).Cells(i,1).Value
               Sheets("tableau").Cells(2,i).Value = Sheets("extract_"&Sheets("tableau").Cells(2,1).Value).Cells(i,1).Value
    Next i 
End Sub

Mais ça ne marche pas du tout. J'ai aucune idée de comment faire (sachant qu'en pratique j'ai un tableau avec bien plus de lignes donc j'aimerais bien automatiser tout ça avec un truc du style

Sheets("extract_"&Sheets("tableau").Cells(1,1).Value)

pour faire appel à extract_Pierre).

Merci !

Bonjour,

Essai ceci et tient moi au courant.

41testkwns.xlsm (20.28 Ko)

Ca fonctionne nickel, merci !

J'ai une autre question dans le même style.

4aled.xlsx (15.60 Ko)

Ce que j'ai initialement :

  • La Sheet histo, les Sheets extract_Pierre et extract_Jack sans les colonnes Key, en rouge.

Ce que j'aimerais obtenir :

  • Le tableau complété comme dans résultats_finaux

Les étapes que j'aimerais faire :

  • Rajouter les colonnes Key dans chaque Sheets extract. Le problème c'est que les colonnes sont pas toujours à la même place. Donc je pense qu'il faudrait utiliser une fonction qui cherche la colonne Date puis après, créer la clef.
  • Compléter le tableau de la Sheet histo en allant chercher la note moyenne correspondante à l'aide des clefs.

J'essaye de faire la première étape pour l'instant mais j'y arrive pas du tout. Car il y a des choses que je sais pas faire. Je ne sais pas quelle fonction utiliser pour chercher la colonne Date, et je ne sais pas comment dire à Excel que je travaille avec la sheet extract_Pierre par exemple. Par exemple si je crée la macro sur la sheet histo et que je mets bêtement le code

dercol = Cells(1, Columns.Count).End(xlToLeft).Column

il va croire que c'est la dernière colonne de la sheet histo.

Merci beaucoup.

Effectivement, en mettant uniquement cells par exemple, excel cherchera dans la feuille active.

Pour cela précise la feuille devant, exemple :

Worksheets("NomdelaFeuille").cells.......

Pour chercher la colonne Date, tu peux faire une boucle sur toutes les colonnes et cherche celle nommée "Date", exemple :

for i = 1 to worksheets("NomdelaFeuille").cells(1, Columns.Count).end(xltoleft).column
         If worksheets("NomdelaFeuille").cells(1,i) = "Date" then
                  'Ta procédure 
          End if
Next

Je n'ai plus mon PC avec moi, je ne peux pas t'aider plus pour l'instant...

Hello. Super, merci ça m'a bien aidé.

Imagine que je veuille remplir la case [D2] de la Sheet histo. En VBA ça serait :

Worksheets("extract_Pierre").Activate

derrow = Cells(Cells(Rows.Count,1).End(xlUp).Row
dercol = Cells(1, Columns.Count).End(xlToLeft).Column

Sheets("histo").Cells(2,4) = INDEX(Range(Cells(1,1),Cells(derrow,dercol));2;1)

Mais ça ne fonctionne pas. Quelle est l'erreur de syntaxe ?
Merci.

Bonjour,

INDEX est une fonction sur une feuille en elle même.

Elle n'est pas directement reconnu en VBA.

Pour les utiliser en VBA, tu dois l'indiquer au programme comme suit :

WorksheetFunction.Index(TesParamètres)

Cependant pour séparer les paramètres ce n'est plus ";" mais ",".

Maintenant je n'utilise jamais la fonction Index donc je ne peux t'en dire plus.

A bientôt

Rechercher des sujets similaires à "vba appel sheet"