Fonction indirect VBA Excel feuille nom variable [Résolu]

cazimiro 8 Messages postés jeudi 20 mars 2003Date d'inscription 15 septembre 2008 Dernière intervention - 15 sept. 2008 à 13:15 - Dernière réponse : cazimiro 8 Messages postés jeudi 20 mars 2003Date d'inscription 15 septembre 2008 Dernière intervention
- 15 sept. 2008 à 16:04
Bonjour à tous,

Voici quelque temps que je me casse les dents sur la fonction indirect:

J'ai un code VBA qui permet de générer des feuilles avec un nom variable.

Dim nom_Feuille As String
nom_Feuille = New_Enfant.TextBox1.Text & "_" & New_Enfant.TextBox2.Text

Jusqu'ici tout va bien, la feuille est bien généré avec ce nom issu de Userform remplit par l'utilisateur.

Là ou ca se complique, c'est que j'ai une feuille nomméé "liste" que je souhaite remplir à partir des donnée de ces feuilles avec le nom variable.

Petit schéma de fonctionnement

1- Le code génère la feuille "nom_Feuille" et la remplit avec des données
2- Le code doit remplir une feuille existante nommée "liste" avec les données de "nom_Feuille" (Nom variable)

Après avoir un peu fouiller sur mon meilleur ami google, je pense que pour faire l'étape 2, il faut que j'utilise la fonction Indirect
J'ai donc ajouter le nom de la feuille dans une cellule de la feuille "liste" et une variable numero_ligne pour récupérer le nom de la feuille.
Colonne AA et Ligne (Numero_Ligne)

j'essaie avec ce code:

ActiveCell.FormulaR1C1 = INDIRECT("AA" & Numero_Ligne & "!" & "D2")

J' obtient une réponse: Fonction inconnu ou end sub....

Vous avez une idée?
Afficher la suite 

4 réponses

Répondre au sujet
cazimiro 8 Messages postés jeudi 20 mars 2003Date d'inscription 15 septembre 2008 Dernière intervention - 15 sept. 2008 à 16:04
+3
Utile
Bon j'ai trouvé la réponse :

il faut remplacer FormulaR1C1 par Formula (ça fera disparaitre les apostrophes)


La fonction INDIRECT interprète un texte comme une référence de plage
de cellules. Elle n'est pas indispensable ici, on pourrait trés bien
mettre


ActiveCell.Formula = "='" & Nom_Feuil & "'!D2"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cazimiro
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 15 sept. 2008 à 14:20
0
Utile
Tu t'embêtes avec la fonction indirect, surtout si ton but est de travailler par du code VBA.
Tu as le nom de feuille variable, que ça soit dans une variable ou dans une cellule de ta feuille 'Liste', tu peux l'appeler avec l'objet Worksheet qui désigne les feuilles dans EXCEL.

Par ex, pour récupérer les données de la cellule A1 pour les mettre en C1 de ta feuille Liste, en utilisant une variable :
Worksheets("Liste").range("C1").value = Worksheets(nom_Feuille).range("A1").value

Si le nom de la feuille est contenue dans la cellule B1 de ta feuille 'Liste' :
Worksheets("Liste").range("C1").value = Worksheets(Worksheets("Liste").range("B1").value).range("A1").value

ou Si tu veux tenir compte de ta colonne AA et une ligne variable :
Worksheets("Liste").range("C1").value = Worksheets(Worksheets("Liste").range("AA" & Numero_Ligne).value).range("A1").value

Molenn
Commenter la réponse de Molenn
cazimiro 8 Messages postés jeudi 20 mars 2003Date d'inscription 15 septembre 2008 Dernière intervention - 15 sept. 2008 à 15:30
0
Utile
Merci pour votre réponse. Oui c'est exact je récupéré bien la valeur de la feuille.
Par contre si l'on modifie la valeur de la case D2 dans  nomFeuille, celle-ci n'est pas réaffecté dans la feuille "liste". C'est là tout mon problème.

En claire dans la feuille liste ce n'est pas une valeur qu'il me faut m'est une valeur relative.... Encore des idées?
Commenter la réponse de cazimiro
cazimiro 8 Messages postés jeudi 20 mars 2003Date d'inscription 15 septembre 2008 Dernière intervention - 15 sept. 2008 à 15:44
0
Utile
Désolé pour le double post, fausse manipulation je pense ;)
Commenter la réponse de cazimiro

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.