Choix liste déroulante -Saisie automatique dans tableau Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
mimilendo35
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 13 avril 2016
Version d'Excel : 2010 FR

Message par mimilendo35 » 19 avril 2016, 08:45

Bonjour,
Je suis un peu perdue.. j'ai fait plusieurs listes déroulantes avec saisie semi-automatique (tableau vert dans la feuille "Comparaison") et lorsque je vais indiquer un résultat dans chacune des lignes, j'aimerais que ce résultat soit automatiquement recopié dans la colonne correspondante (feuille "Tableau"). Par exemple, si dans la liste déroulante je choisis acétamipride, le résultat indiqué sera directement réécrit dans la colonne acétamipride de la feuille "tableau". Si je choisis autre chose, le résultat sera indiqué dans une autre colonne.
Je vous envoie le fichier en zip pour que ce soit plus simple :D

Merci beaucoup !
Pesticides2.zip
(219.77 Kio) Téléchargé 28 fois
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'593
Appréciations reçues : 146
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 19 avril 2016, 12:13

Bonjour Mimilendo, bonjour le forum,

Il faut que tu évites absolument les Select qui ne font que ralentir l'exécution du code. Prend aussi l'habitude d'utiliser des variables, de les déclarer et de les définir. Cela semble être plus long à coder mais tu n'imagines pas après le temps que tu gagnes par la suite.
je te propose le code ci-dessous qui fait tout au bouton Enregistrer. Pense à sélectionner les bonnes valeurs dans les différentes listes déroulante et à écrire le résultat avant de cliquer ...

Le code commenté :
Sub Copiercoller()
Dim C As Worksheet 'déclare la variable C (onglet Comparaison)
Dim T As Worksheet 'déclare la variable T (onglet Tableau)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Byte 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim COL As Integer 'déclare la variable COL (COLonne)

Set C = Sheets("Comparaison") 'définit l'onglet C
Set T = Sheets("Tableau") 'définit l'onglet T
Set DEST = T.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
LI = DEST.Row 'définit la ligne LI
C.Range("E2:E9").Copy 'copie la plage E2:E9
DEST.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=True 'renvoie dans DEST la plage transposée
TV = C.Range("D10:E25") 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    If TV(I, 2) <> "" Then 'condition : si la valeur ligne I colonne 2 de TV n'est pas vide
        Set R = T.Rows(1).Find(TV(I, 1), , xlValues, xlWhole) 'définit la recherche R (recherche dans la ligne 1 de l'onglet T la valeur entière de la donnée ligne I colonne 1 de TV)
        If Not R Is Nothing Then COL = R.Column ''si il existe au moins une occurrence trouvée, définit la colonne COL de la première occurrence trouvée
        T.Cells(LI, COL).Value = TV(I, 2) 'renvoie dans la cellule ligne LI colonne COL de l'onglet T la valeur de la donnée ligne I colonne 2 de TV
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
m
mimilendo35
Jeune membre
Jeune membre
Messages : 18
Inscrit le : 13 avril 2016
Version d'Excel : 2010 FR

Message par mimilendo35 » 20 avril 2016, 08:25

Merci (encore une fois), je prends note pour ces conseils :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message