RechercheV à plusieurs valeurs sans menu déroulant

mark_25 Messages postés 5 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai trouvé sur ce forum une fonction qui permet de faire un choix via menu déroulant de l'assignation d'une commune plutôt qu'une autre lorsqu'il y a un même code postal pour plusieurs villes a l'adresse: https://forums.commentcamarche.net/forum/affich-26283089-recherchev-code-postaux-villes-excel-mac-2011#p26322178

J'aimerais savoir si il est possible au lieu d'avoir les données recherchées en menu déroulant,d'avoir une fonction qui puisses les inséré dans la colonne de la fonction.
Je vous donne un exemple de ce que je cherche à produire:https://www.cjoint.com/?BJzkE0IJP93
Merci

3 réponses

  1. Morgothal Messages postés 1350 Statut Membre 184
     
    Bonjour,
    Pourquoi ne pas trier selon la première colonne ? Faut il absolument qu'une seule occurrence de la première colonne soit affichée ?

    Sinon une autre solution est d'utiliser un tableau croisé dynamique.

    Ces solutions sont bien moins compliqué qu'un RECHERCHEV pour cette tâche ;)
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Re,

    C'est sûr que trier par A et B est le plus simple...
    proposition en vba : https://www.cjoint.com/?BJzoYtBJ3oj

    eric
    0
  3. mark_25 Messages postés 5 Statut Membre
     
    Voilà c'est exactement ça eriic. Peut-être que j'avais mal exprimé ma requête mais c'est exactement ce que je recherche. Mais bon puisque je ne suis pas un pro en VBA, si tu pouvais m'envoyer les instructions liées au programme sa me simplifierai la vie pour pouvoir l'adapté à mon tableau...
    Et merci encore.
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Alt+F11 pour afficher l'éditeur VBE.

      Le code commenté :
      Sub liste()
          Dim lig As Long, clé As String
          lig = Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne occupée en colonne A
          Application.ScreenUpdating = False ' ne pas rafraichir l'écran
          [A1].Resize(lig, 2).Copy Destination:=[G1] ' copier A1:BdernièreLigne en G1
          [G1].Sort Key1:=Range("G2"), Order1:=xlAscending, Header:=xlYes ' trier
          clé = Cells(2, 7) ' mémoriser 'origine'
          For lig = 3 To lig ' pour chaque ligne
              If Cells(lig, 7) = clé Then ' si même origine que ligne précédente
                  Cells(lig, 7) = "" ' on effface
              Else
                  clé = Cells(lig, 7) ' sinon mémorisation nouvelle origine
              End If
          Next lig ' ligne suivante
          Application.ScreenUpdating = True ' rétablir rafraichissement écran
      End Sub

      eric
      0
    2. mark_25 Messages postés 5 Statut Membre
       
      C'est super tu m'as enlevé une grande épine du pied.
      Vraiment merci
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok, je met en résolu pour toi (en haut vers ton titre)
      eric
      0