Recherche dans une matrice excel

Résolu
Cocodenso Messages postés 126 Statut Membre -  
Cocodenso Messages postés 126 Statut Membre -
Bonjour,

je dois mettre en place une recherche dans une matrice (18colonnes:301lignes).
voici un schéma qui me permettra d'illustrer ce que je dois faire

64 aaaa 254 ert
64 bbbb 255 ert
128 cccc 256 ert
256 dddd 257 ert
256 eeee 258 ert
256 ffff 259 ert

mon tableau est trié selon la première colonne (ordre croissant).
Il faut que je sélectionne toutes les lignes avec "64" dans la première colonne par exemple et ressortir les données de la 2eme et 4eme colonne.
J'ai essayé d'utiliser la recherchev mais cela ne fonctionne pas. En effet j'ai une erreur:"Attendu: séparateur de liste ou)" alors que je pense utiliser la bonne syntaxe:

Range ("D7")=RECHERCHEV(64;BDDi!A1:S301;2)

C'est le ";" en gras et souligné qui est surligné comme faute

si quelqu'un peut me donner une petite piste s'il vous plait car je suis un bon débutant en dev VB... :s

Merci d'avance

cdlt
Configuration: Windows XP
Firefox 3.5.7

10 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Tu tiens absolument à du VBA ?
    Car le pb peut se résoudre par formules (2 colonnes intermédiaires) ou par formule matricielle (si tu connais ces b^tes là). dans les solutions, voire par VBA, il n'est pas nécessaire de trier la 1° colonne

    Tu dis, dans l'attente
    0
  2. Cocodenso Messages postés 126 Statut Membre 1
     
    en fait je voulais utiliser le VBA car j'ai créer un bouton pour d'autres opérations mais si les formules sont assez simple ma fois pourquoi pas. pour l'instant je met en place une maquette de test sous excel que je dois présenter dans quelque jours. Donc si ce n'est pas en VBA ce n'est pas non plus dramatique.
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Ci joint une solution par formules
    https://www.cjoint.com/?cjpr536sxt

    Si tu ne connais les matriicelles, je te déconseille la méthode si tu dois la présenter

    tu dis si tu veux du VBA, mais à mon avis, cela ne vaut pas lu coup pour 300 lignes
    0
  4. Cocodenso Messages postés 126 Statut Membre 1
     
    je te remercie... je commence a avancer mais lors d'un de mes collage, le PasteSpecial a échouer.... j'ai plus qu'a trouver pourquoi ^^

    en tous les cas merci bcp je pense que si dans 1h je ss encore sur ce VBA, alors je prendrai ta solution qui est bien plus propre...
    franchement ca m'aide bien et je commence a comprendre certaines de mes erreurs
    je te tiens au courant si tu veux pour le vba
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    EN VBA le select-selection paste est à proscrire dans 99% des cas.... bouffe une mémoire considérable et ralentit plus de 500 fois la procédure....

    si j'ai 2 minutes (un peu plus quand m^me) je te fais une procédure VBA
    0
  7. Cocodenso Messages postés 126 Statut Membre 1
     
    je viens de penser a ca mais est il gérable avec ta situation d'avoir la matrice sur une feuille et le résultat sur une autre? car en fait ta solution est bien plus propre et plus optimisée que la mienne (if et for imbriqué un bazar monstrueux)
    je pense faire un mixe entre mon code et ta solution
    0
  8. Cocodenso Messages postés 126 Statut Membre 1
     
    non non mais t'inquiète pas c'est deja très sympa de ta part alors ne perds pas de temps a faire une procédure VBA c'est deja très sympa de ta part de m'avoir résolut le problème avec ta technique. en plus ca me permet d'apprendre plus encore
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bin c'est fait et vu la météo dans mon coin......

    Option Base 1
    Sub extraire()
    Dim derlig As Long, choix As Long, nbre As Long, col As Byte, lig As Byte
    Dim tablo
    With Sheets(1)
        choix = Range("choix") 'le meme que par formule
        lig = 1
        nbre = Application.CountIf(Range("ref"), choix)
        ReDim tablo(nbre, 2)
        col = Range("ref").Column
        If nbre > 0 Then
            For cptr = 1 To nbre
                lig = .Columns(1).Find(choix, .Cells(lig, col), xlValues).Row
                 tablo(cptr, 1) = .Cells(lig, col + 1)
                tablo(cptr, 2) = .Cells(lig, col + 3)
            Next
        Else
            MsgBox " référence " & Range("choix") & " inconnue", vbCritical
            Exit Sub
        End If
    End With
    
    With Sheets(2)
        .Range("A5:B300").Clear
        .Range("A5").Resize(nbre, 2) = tablo
        .Range("A5:B" & nbre + 4).Borders.Weight = xlThin
    End With
    End Sub


    avec le classeur
    https://www.cjoint.com/?cjqoSMiJfQ

    mais crois en un vieux routier; il est mal vu par les responsables info d'utiliser VBA quand on peut utiliser efficacement des formules
    0
  10. Cocodenso Messages postés 126 Statut Membre 1
     
    je te fais confiance et je suis en train d'utiliser plutot les formules, ce qui me parait beaucoup plus interessant. au moisn je vais commencer a bien comprendre le fonctionnement d'excel!

    je te remercie encore une fois de tous tes conseils et ttes tes réponses.

    a bientot et bon courage
    0
  11. Cocodenso Messages postés 126 Statut Membre 1
     
    un grand merci a toi michel_m j'ai pu terminer ma maquette qui est fonctionnelle!
    merci beaucoup tu m'as fait gagner un temps fou!

    cordialement et a bientot
    0