Fonction indirect feuille nom varaible

Fonction indirect feuille nom varaible - VB/VBA/VBS - Programmation

Marsh Posté le 15-09-2008 à 15:10:36    

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 recuperer le nom de la feuille.$
Colonne AA et Ligne (Numero_Ligne)
 
j'essai 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?

Reply

Marsh Posté le 15-09-2008 à 15:10:36   

Reply

Marsh Posté le 15-09-2008 à 15:31:28    

En fait, dsl si je comprends mal, tu cherches a inserer des valeurs d'une de tes feuilles créée sur ta feuille qui existe déjà... Si c'est le cas, il fait utiliser un truc comme

Code :
  1. sheets("liste" ).cells(ligne, colonne).value = sheets(nom_feuille).cells(ligne, colonne).value


J'espere ne pas m'etre trompé sur le sens de ta question


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 15-09-2008 à 15:51:12    

Merci beaucoup pour votre réponse.
Alors...Oui je récupéré bien la valeur à l'instant (t).
par contre si je modifie dans nomFeuille D2 la valeur, celle-ci n'est pas actualisée dans "liste". Ce que je cherche c'est une valeur relative.
 
Encore une idée?

Reply

Marsh Posté le 15-09-2008 à 16:07:47    

cazimiro33 a écrit :

Merci beaucoup pour votre réponse.
Alors...Oui je récupéré bien la valeur à l'instant (t).
par contre si je modifie dans nomFeuille D2 la valeur, celle-ci n'est pas actualisée dans "liste". Ce que je cherche c'est une valeur relative.
 
Encore une idée?


 
C'est good... Solution trouvée:
 
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"

Reply

Marsh Posté le 15-09-2008 à 16:08:19    

une solution dite "a l'arrache" serait de mettre, dans le thisworkbook

Code :
  1. Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  2. Sheets("liste" ).Cells(ligne, colonne).Value = Sheets(mon_feuille).Cells(ligne, colonne).Value
  3. End Sub


PS : Tutoie moi. Déjà parce que moi je le fais, et surtout parce que le forum regroupe une communauté, pas des membres d'une entreprise ;)
 
Edit: ce code en fait met à jour les données a chaque fois que tu changes de feuille, donc en gros, en retournant sur "liste", les données seront mise à jour ;)
 
Edit2 : grilled, en plus ta solution est largement plus propre et simple ^^


Message édité par Moonschild le 15-09-2008 à 16:11:49

---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed