Liste fixe dans le VBA

Bonsoir le forum

Est-il possible de mettre en dur dans le VBA deux listes faisant référence l'une vers l'autre

En fait j'ai un logiciel qui me génère des fiches comme celle que j'ai mis en pièce jointe.

Je voudrais mettre à jour dans cette fiche une cellule en fonction du contenu d'une autre et avoir la liste en fixe dans le classeur personnel de macro

Je sais que sais que ce système fonctionne dans un "UserForm", merci gmb, mais je ne sais pas si c'est possible directement de cellule à cellule

D'avance je vous remercie pour votre aide et pour votre disponibilité

2220687.zip (19.17 Ko)

Salut Eole,

ça ne devrait pas poser de problème à la plupart d'entre nous mais je ne comprends pas les liaisons entre les 2 listes.

Tu peux expliquer?

A+

Bonjour le forum

bonjour curulis57

Merci pour ton aide et pour ton attention

le premier de la listetb1 correspond au premier de la liste1 et ainsi dessuite le second avec le second le troisiseme avec le troisieme...

Salut Eole,

oui, ça, j'avais compris!

C'est peut-être évident pour toi mais figure-toi que ça l'est moins pour moi!

Des explications plus détaillées (qui, que, quoi, dont, où...) m'aideraient quelque peu!

A+

Bonjour, Salut Curulis,

Je ne comprends pas bien... Tu peux faire une fonction renvoyant la valeur correspondante d'une liste par rapport à une autre... mais tu n'as pas indiqué de quelle façon tu voulais que cela se produise.

Je ne vois pas trop l'intérêt de mettre ça dans le classeur perso (mais perso, suis pas fana du classeur perso... )

NB- Telles que tapées sur ta feuille, tes listes vont déclencher des erreurs !

Cordialement.

Bonsoir le forum

Bonsoir curulis57 et bonsoir MFerrand, merci pour votre attention

Voilà ce que je voudrais faire (j'ai repris la liste pour qu'elle puisse fonctionner dans le vba)

Je sert beaucoup du personal parce que pour moi cela évite qu'un collaborateur travaillant sur mon poste

puisse toucher ou modifier mes bases

donc voilà je traite parfois plus de 100 fiches comme celle-ci par jour

En cellule "C21" j'ai une donnée qui est inscrite, je voudrais que lorsque je clique sur un bouton

que j'aurai créé dans le ruban , la valeur de la cellule "J2" change en fonction de la liste

exemple : 2FT en "C21" alors BSM en "J2"

Merci pour votre attention et pour votre aide

Bonsoir Eole,

de liste à liste, de cellule à cellule, dans tous les sens et même à l'envers, pas de souci mais depuis un bouton dans le ruban, là, je dépose les armes aux pieds du crack qui pourra te le faire!

Je suis l'affaire, histoire d'apprendre Excel un peu plus...

Joyeuses Fêtes!

A+

Bonsoir curulis57

en fait je ne comprends pas

Est-il possible de le faire avec le fichier dans le fichier que j'ai mis en pièce jointe?

Bonjour Curulis, Eole

Curulis : en fait son classeur perso apparaît (les commandes) dans l'onglet Complément du ruban, il y accède par là.

Mais comme je l'ai dit je ne vois pas trop l'intérêt pour une telle commande, très particularisée, et qui aurait plus sa place dans un évènement Change qui, lorsqu'on modifie l'une des deux cellules concernées, aligne l'autre... Pas d'intervention, et méthode éprouvée.

Cordialement.

Bonsoir MFerrand

en fait la fiche contient déjà la donnée contenue dans la cellule "C21" du coup il faudrait que l'actualisation se fasse à l'ouverture du fichier

Je ne vois pas trop comment tu veux procéder ?

Bonjour le forum

Bonjour MFerrand

En fait tous les jours j'ouvre des fiches comme celle que j'ai joint au post, dans ces fiches en cellule "C21" il y a une donnée

Ce que je cherche à faire, c'est lorsque je clique sur un bouton, une macro cherche dans une première liste la donnée égale au contenue de la cellule "C21", puis recherche dans l'ordre dans une deuxième liste la valeur équivalente et va la collée dans la cellule "J2" de la feuille

gmb m'a fait un code fonctionnant avec ce principe lais avec un "UserForm", je place le fichier en pièce jointe si ça peut aider

Merci pour ton aide et ta disponibilité

Salut Eole,

deux choses :

  • cette "fiche" est une feuille Excel : comment arrive-t-elle ? Dois-tu l'activer lorsque le fichier (classeur) est déjà ouvert? S'ouvre-t-elle à l'ouverture du fichier (classeur)? Faut-il un bouton pour coordonner les deux cellules ? ...
  • en ce qui me concerne et indépendamment des solutions apportées par d'autres, j'aimerais avoir cette liste de code (sans _ ), séparés d'une virgule, en alterne (1er code Liste1, code correspondant Liste2, 2e code Liste1, 2e code correspondant Liste2,...)

Sans quoi, ce sera sans moi!

A+

Bonjour,

Il y a déjà d'abord une correction à faire dans tes listes :

Sub test()
    Dim Liste1, ListeTB1
    Liste1 = Split("2 FT;2 FTM;3 FT;4 FT;5 FTM;5 ML;5,5 FT;5,5 JFT;5,5 FTX;6 FTM;6 ML;6 FTMX O.MAX;" _
     & "6 FTMX O.MIN;6 FTMY O.MAX;6 FTMY O.MIN;6 FTMZ;6 HFTM D30;6 HFTM D45;6 HFTM S30;6 HFTM S45;" _
     & "6 JFTM;6 XMX O.MAX;6 XMX O.MIN;6 XMY O.MAX;6 XMY O.MIN;6 MT;6 MX;6,25 FT;6,25 FTX;" _
     & "6,25 FTY;6,25 FTZ;6,25 HFT D30;6,25 HFT D45;6,25 HFT S30;6,25 HFT S45;6,25 JFT;7 D 2,5;" _
     & "7 FT;7 FTM;7 ML;7 FTMX O.MAX;7 FTMX O.MIN;7 FTMY O.MAX;7 FTMY O.MIN;7 FTMZ;7 FTX;7 FTY;" _
     & "7 FTZ;7 HFT D30;7 HFT D45;7 HFT S30;7 HFT S45;7 HFTM D30;7 HFTM D45;7 HFTM S30;7 HFTM S45;" _
     & "7 JFT;7 JFTM;7 S 1,9;7 XMX O.MAX;7 XMX O.MIN;7 XMY O.MAX;7 XMY O.MIN;7 MT;7 MX;8 D 2,5;" _
     & "8 FT;8 FTM;8 ML;8 FTMX O.MAX;8 FTMX O.MIN;8 FTMY O.MAX;8 FTMY O.MIN;8 FTX;8 FTY;8 FTZ;" _
     & "8 HFT D30;8 HFT D45;8 HFT S30;8 HFT S45;8 HFTM D30;8 HFTM D45;8 HFTM S30;8 HFTM S45;8 JFT;" _
     & "8 JFTM;8 S 1,9;8 XMX O.MAX;8 XMX O.MIN;8 XMY O.MAX;8 XMY O.MIN;8 MT;8 MX;10 FT;10 JFT;" _
     & "10 FTX;10 FTY;10 HFT D30;10 HFT D45;10 HFT S30;10 HFT S45;12 FT;12 FTX;12 FTY;12 HFT D30;" _
     & "12 HFT D45;12 HFT S30;12 HFT S45;Potelet fort;Potelet moyen;ERDF;8 D 1,5;7 D 1,5", ";")
    ListeTB1 = Split("BSD;MSD;BSQ;BST;MSC;ML5;BSC;BM5;BCC;MS6;ML6;MC6;MC6;MC6;MC6;M36;MH6;MH6;MH6;" _
     & "MH6;MM6;XC6;XC6;XC6;XC6;MT6;MX6;BS6;BC6;BC6;B36;BH6;BH6;BH6;BH6;BM6;CS7 / EDF;BS7;MS7;ML7;" _
     & "MC7;MC7;MC7;MC7;M37;BC7;BC7;B37;BH7;BH7;BH7;BH7;MH7;MH7;MH7;MH7;BM7;MM7;197 / EDF;XC7;XC7;" _
     & "XC7;XC7;MT7;MX7;CS8 / EDF;BS8;MS8;ML8;MC8;MC8;MC8;MC8;BC8;BC8;B38;BH8;BH8;BH8;BH8;MH8;MH8;" _
     & "MH8;MH8;BM8;MM8;198 / EDF;XC8;XC8;XC8;XC8;MT8;MX8;BS0;BM0;BC0;BC0;BH0;BH0;BH0;BH0;BS2;BC2;" _
     & "BC2;BH2;BH2;BH2;BH2;POT;POT", ";")
    MsgBox UBound(Liste1)
    MsgBox UBound(ListeTB1)
End Sub

La première comprend 113 éléments, la seconde 110, 3 d'écarts... !

Cordialement.

Bonsoir le forum

Bonsoir curulis57 et MFerrand

Merci pour votre attention et votre aide

En pièce jointe le fichier excel avec les listes en colonnes

Complète avec 113 éléments, j'en ai créé 3 car je n'ai pas encore leur correspondance

J'ai autant de classeur que poteaux dans un canton alors le fichier en pièce jointe a cette forme, uniquement les deux feuilles qui sont dedans, mais je peux avoir dans un même dossier (le canton) plusieurs fichiers du même type

Je n'ai rien à activer j'ouvre simplement le fichier et je remplis des cases.

Ce n'est pas moi qui génère les fichiers, mais un logiciel qui exporte des données dans des fichiers excel (*.xls)

Merci pour votre aide


Mille excuses voici le fichier

merci

2520687-v2-1.zip (21.82 Ko)

Bonjour,

Sub CorrespTB(Optional Cel1 As String = "J2", Optional Cel2 As String = "C21")
    Dim Liste1, ListeTB1
    Liste1 = Split("BSD;MSD;BSQ;BST;MSC;ML5;BSC;BM5;BCC;MS6;ML6;MC6;MC6;MC6;MC6;M36;MH6;MH6;MH6;MH6;" _
     & "MM6;XC6;XC6;XC6;XC6;MT6;MX6;BS6;BC6;BC6;B36;BH6;BH6;BH6;BH6;BM6;CS7 / EDF;BS7;MS7;ML7;MC7;" _
     & "MC7;MC7;MC7;M37;BC7;BC7;B37;BH7;BH7;BH7;BH7;MH7;MH7;MH7;MH7;BM7;MM7;197 / EDF;XC7;XC7;XC7;" _
     & "XC7;MT7;MX7;CS8 / EDF;BS8;MS8;ML8;MC8;MC8;MC8;MC8;BC8;BC8;B38;BH8;BH8;BH8;BH8;MH8;MH8;MH8;" _
     & "MH8;BM8;MM8;198 / EDF;XC8;XC8;XC8;XC8;MT8;MX8;BS0;BM0;BC0;BC0;BH0;BH0;BH0;BH0;BS2;BC2;BC2;" _
     & "BH2;BH2;BH2;BH2;POT;POT;ERDF;7XXXX;8XXXX", ";")
    ListeTB1 = Split("2 FT;2 FTM;3 FT;4 FT;5 FTM;5 ML;5,5 FT;5,5 JFT;5,5 FTX;6 FTM;6 ML;6 FTMX O.MAX;" _
     & "6 FTMX O.MIN;6 FTMY O.MAX;6 FTMY O.MIN;6 FTMZ;6 HFTM D30;6 HFTM D45;6 HFTM S30;6 HFTM S45;6 JFTM;" _
     & "6 XMX O.MAX;6 XMX O.MIN;6 XMY O.MAX;6 XMY O.MIN;6 MT;6 MX;6,25 FT;6,25 FTX;6,25 FTY;6,25 FTZ;" _
     & "6,25 HFT D30;6,25 HFT D45;6,25 HFT S30;6,25 HFT S45;6,25 JFT;7 D 2,5;7 FT;7 FTM;7 ML;7 FTMX O.MAX;" _
     & "7 FTMX O.MIN;7 FTMY O.MAX;7 FTMY O.MIN;7 FTMZ;7 FTX;7 FTY;7 FTZ;7 HFT D30   ;7 HFT D45;" _
     & "7 HFT S30   ;7 HFT S45   ;7 HFTM D30;7 HFTM D45;7 HFTM S30;7 HFTM S45;7 JFT;7 JFTM;7 S 1,9;" _
     & "7 XMX O.MAX;7 XMX O.MIN;7 XMY O.MAX;7 XMY O.MIN;7 MT;7 MX;8 D 2,5;8 FT;8 FTM;8 ML;8 FTMX O.MAX;" _
     & "8 FTMX O.MIN;8 FTMY O.MAX;8 FTMY O.MIN;8 FTX;8 FTY;8 FTZ;8 HFT D30   ;8 HFT D45   ;8 HFT S30   ;" _
     & "8 HFT S45   ;8 HFTM D30;8 HFTM D45;8 HFTM S30;8 HFTM S45;8 JFT;8 JFTM;8 S 1,9;8 XMX O.MAX;" _
     & "8 XMX O.MIN;8 XMY O.MAX;8 XMY O.MIN;8 MT;8 MX;10 FT;10 JFT;10 FTX;10 FTY;10 HFT D30  ;10 HFT D45  ;" _
     & "10 HFT S30  ;10 HFT S45  ;12 FT;12 FTX;12 FTY;12 HFT D30;12 HFT D45;12 HFT S30;12 HFT S45;" _
     & "Potelet fort;Potelet moyen;ERDF;7 D 1,5;8 D 1,5", ";")
    On Error Resume Next
    With ActiveSheet
        .Range(Cel2) = ListeTB1(WorksheetFunction.Match(.Range(Cel1), Liste1, 0) - 1)
    End With
End Sub

Les arguments optionnels (dotés d'une valeur par défaut) sont éventuellement destinés à te permettre de l'utiliser avec d'autres cellules...

Cordialement.

Bonjour le forum

Bonjour MFerrand

Merci pour ton aide mais je n'arrive pas à faire fonctionner le code

C'est à dire ?

Bonsoir le forum

Bonsoir MFerrand

Merci pour ton aide

J'ai placé le code dans un module mais je n'arrive pas à affecter la macro au bouton vba ne reconnait pas le nom de la macro

J'ai essayé de lancé le code directement et là rien

Je ne comprends pas

Si tu l'affectes à un bouton, tu tapes son nom (uniquement).

Rechercher des sujets similaires à "liste fixe vba"