VBA - Appeler une variable a partir d'un Array
Ferméozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 - 25 juil. 2022 à 21:21
- VBA - Appeler une variable a partir d'un Array
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Appeler en privé - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
5 réponses
22 juil. 2022 à 16:08
Bonjour
Un exemple à adapter
https://www.cjoint.com/c/LGwohMFBCRB
Cdlmnt
Modifié le 22 juil. 2022 à 20:24
Bonsoir,
Merci beaucoup pour la proposition mais malheureusement ça ne conviendrait pas dans mon cas car mes tableaux ne sont pas identiques. Désolé j'aurais peut-être du le préciser initialement. C'est une partie d'un tableau que je cherche a actualiser à partir d'un second.
C'est la raison pour laquelle j'analyse les noms de même en-tête pour identifier les colonnes que j'ai besoin d'analyser et je sauve les numéros de colonnes qui m'intéressent sous des variables afin de pourvoir les appeler par la suite pour les comparer et actualiser les données. A noter que les noms des colonnes ne sont pas identiques non plus.
Concrètement, je cherche a concaténer du texte mais que le résultat soit interprété par Excel comme étant une variable et non pas un texte et de ce fait renvoi la valeur de cette dernière.
Encore merci pour votre aide
Cordialement
Jean-Christophe
22 juil. 2022 à 21:30
Je n'arrive pas a comprendre le problème, pour moi les variables créés à partir de ton code sont bien nommées.
Peut être faut-il rajouter l'objet devant le nom de ta variable pour selectionner les bonnes feuilles avec Worksheets
For Each Var In Array("Nom", "Pre", "Sal", "Fin", "Tx", "Cont", "Mail", "Add1", "Add2", "CP", "Vil", "Pay", "IBAN", "Perm", "Cant") bVar = "b" & Var WsVar = "Ws" & Var If Worksheets(b).Cells(i, bVar.Value).Value <> Worksheets(Ws).Cells(lg, WsVar.Value).Value Then Worksheets(b).Cells(i, bVar).Value = Worksheets(Ws).Cells(lg, WsVar).Value Else 'suite du code End If Next Var
23 juil. 2022 à 10:18
Je ne comprends pas bien 2 choses ici
b.Cells(i, bVar.Value).Value
1. b est un nom de feuille comme le pense ozone
- alors il faut écrire Sheets(b).cells(...
- sinon ???
2. bVar.value doit être la référence à une colonne donc doit contenir soit un entier soit une/deux lettre/s "B", "C", ...,"AA",
Or, d'après ton code, j'interprète bVar comme un nom de plage( ici une (colonne)
- si oui il faut écrire Sheets(b).Range(bvar).Cells(i,1).Value (Sheets(b) n'est pas obligatoire)
sinon ???
Sans le fichier, difficile d'aller plus loin
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question25 juil. 2022 à 21:03
Bonsoir;
Merci beaucoup pour votre aide et désolé pour mon délai de réponse.
Le printscreen d'Ozone illustre très bien mon problème en fait. La variable bVar a bien été créée et elle renvoi "bNom" comme string, or plus haut dans mon code, j'ai affecté une valeur chiffrée à la variable bNom et c'est sous forme de variable que je souhaiterait l'appeler plutôt que sous forme de valeur.
En appelant bVar; j'aurais souhaité indirectement appeler la valeur stocker dans la variable bNom, pour pouvoir ensuite boucler tout ça avec un Array pour fluidifier mon code et éviter les redondances.
ccm81 : effectivement b. est une variable objet a laquelle j'ai affecté la feuille à actualiser et bVar est simplement un n° de colonne censé être appelé via
b.cells(i, bVar)
Merci beaucoup et bonne soirée.
Jc
Modifié le 25 juil. 2022 à 21:22
Sans trop m'avancer sur ma réponse et à voir avec d'autres contributeurs mais je dirai qu'il existe une autre solution avec des boucles plutôt que d'essayer de reconstituer des noms de variable à partir de String qui je pense n'est pas supporté par le VBA.
Il faudrait, si possible, avoir une partie plus importante de ton code pour essayer de tourner le problème différemment.