cazimiro
Messages postés8Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention15 septembre 2008
-
15 sept. 2008 à 13:15
cazimiro
Messages postés8Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention15 septembre 2008
-
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)
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 15 sept. 2008 à 14:20
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
cazimiro
Messages postés8Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention15 septembre 2008 15 sept. 2008 à 15:30
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?