Choix liste déroulante -Saisie automatique dans un autre tableau

mimilendo35

XLDnaute Nouveau
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 !
 

Pièces jointes

  • Pesticides2.zip
    219.8 KB · Affichages: 53
  • Pesticides2.zip
    219.8 KB · Affichages: 47

CPk

XLDnaute Impliqué
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Bonjour, à coller en I2 et à étirer en long et en large.

Code:
=SIERREUR(SI($A2=Comparaison!$E$2;RECHERCHEV(Tableau!I$1;Comparaison!$D$1:$E$25;2;0);"");"")
 
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Bonjour mimilendo35, Pierre, CPk,

Collez cette macro dans le code de la feuille "Comparaison" :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Variant, c As Range, col As Variant
With Feuil4 'CodeName de la feuille "Tableau"
  lig = Application.Match([E2], .Columns(1), 0)
  If IsError(lig) Then lig = .Cells(.Rows.Count, 1).End(xlUp)(2).Row
  .Rows(lig).ClearContents 'RAZ
  .Cells(lig, 1).Resize(, 8) = Application.Transpose([E2:E9])
  For Each c In [D10:D25]
    col = Application.Match(c, .Rows(1), 0)
    If IsNumeric(col) Then .Cells(lig, col) = c(1, 2)
  Next
End With
End Sub
Par ailleurs la liste de validation en E2 contient des doublons, c'est normal car il y en a dans la feuille "Labo".

Il faudrait peut-être les distinguer en modifiant les formules en E3:E9 , mais c'est un autre problème...

Edit : ajouté .Rows(lig).ClearContents 'RAZ

A+
 
Dernière édition:

CPk

XLDnaute Impliqué
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Salutation job75, c'est vrai que pour le coup, vu le nombre de colonne...VBA est plus avantageux d'un point de vu rapidité.
Mimilendo, n'oubliez pas de répondre à ceux qui se sont proposés sur l'autre sujet :) (si ce n'est pas déjà fait)
 

mimilendo35

XLDnaute Nouveau
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Bonjour Job75,
Merci pour ce VBA :) Il est possible de l'activer seulement en appuyant sur un bouton ? Pour éviter les erreurs..

Je comprends ce que vous voulez dire pour les doublons, et je n'y avais pas pensé (un même lot peut être analysé par deux labos différents d'où les doublons). J'aimerais bien améliorer cette liste déroulante, soit en mettant les plus récents en haut, ou bien en les mettant dans l'ordre alphabétique mais je ne sais pas quelle solution est la meilleure..
Je peux aussi mettre la date ou le labo en référence supplémentaire en plus du N° de lot, je vais voir :rolleyes:
 
Dernière modification par un modérateur:

mimilendo35

XLDnaute Nouveau
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Merciii ! Dernière petite question, j'avais oublié de préciser mais à l'origine dans toutes mes cellules (à partir de la colonne I) j'aimerais y inscrire "NR", quand j'exécute le VBA, j'aimerais que les valeurs écrasent les NR mais n'enlèvent pas les NR des autres cellules, comment puis-je arranger cela ?

A+
 

job75

XLDnaute Barbatruc
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Re,

Code:
Sub Enregistrer()
Dim lig As Variant, c As Range, col As Variant
With Feuil4 'CodeName de la feuille "Tableau"
  lig = Application.Match([E2], .Columns(1), 0)
  If IsError(lig) Then lig = .Cells(.Rows.Count, 1).End(xlUp)(2).Row
  .Cells(lig, 1).Resize(, .Cells(1, .Columns.Count).End(xlToLeft).Column) = "NR"
  .Cells(lig, 1).Resize(, 8) = Application.Transpose([E2:E9])
  For Each c In [D10:D25]
    col = Application.Match(c, .Rows(1), 0)
    If IsNumeric(col) And c(1, 2) <> "" Then .Cells(lig, col) = c(1, 2)
  Next
End With
End Sub
A+
 

mimilendo35

XLDnaute Nouveau
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Re,

Code:
Sub Enregistrer()
Dim lig As Variant, c As Range, col As Variant
With Feuil4 'CodeName de la feuille "Tableau"
  lig = Application.Match([E2], .Columns(1), 0)
  If IsError(lig) Then lig = .Cells(.Rows.Count, 1).End(xlUp)(2).Row
  .Cells(lig, 1).Resize(, .Cells(1, .Columns.Count).End(xlToLeft).Column) = "NR"
  .Cells(lig, 1).Resize(, 8) = Application.Transpose([E2:E9])
  For Each c In [D10:D25]
    col = Application.Match(c, .Rows(1), 0)
    If IsNumeric(col) And c(1, 2) <> "" Then .Cells(lig, col) = c(1, 2)
  Next
End With
End Sub
A+

A quel endroit est suggéré la colonne I, je dois modifier c'est à partir de la colonne J :)
 

job75

XLDnaute Barbatruc
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Re,

A quel endroit est suggéré la colonne I, je dois modifier c'est à partir de la colonne J :)

Je ne m'occupe pas de la colonne I pour entrer "NR" puisque les colonnes A:H sont écrasées ensuite par :

Code:
.Cells(lig, 1).Resize(, 8) = Application.Transpose([E2:E9])
Enfin pour régler l'affaire des numéros doublons il suffit de traiter la feuille "Labo" par cette macro :

Code:
Sub NumeroDoublon()
Dim i&, x$, j&
With Sheets("Labo").[A1].CurrentRegion
  .Sort .Columns(1), xlAscending, Header:=xlYes
  For i = 2 To .Rows.Count
    If .Cells(i, 1) = .Cells(i + 1, 1) Then
      x = .Cells(i, 1)
      j = 0
      While .Cells(i + j, 1) = x
        .Cells(i + j, 1) = x & " (" & j + 1 & ")"
        j = j + 1
      Wend
      i = i + j - 1
    End If
  Next
End With
End Sub
A+
 

mimilendo35

XLDnaute Nouveau
Re : Choix liste déroulante -Saisie automatique dans un autre tableau

Re bonjour,
Je me suis rendu compte que je faisais les choses dans le mauvais ordre.. Du coup je suis un peu repartie du début. Il faut d'abord que les infos de E2 à E10 soient saisies ensuite c'est au tour des NR puis en dernier lieu les valeurs (en laissant les NR dans les autres cellules). Il restera des cellules vides, dans lesquelles je mettrais "<LOQ".
Mais j'ai un problème et ma macro "RESULT" écrase ma macro "Recherche"..
Voici le fichier : Document Cjoint

Merci d'avance :)
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
315 133
Messages
2 116 604
Membres
112 802
dernier inscrit
Dan Marc