Recherche dans une matrice excel

Résolu/Fermé
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
- 9 févr. 2010 à 12:48
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
- 10 févr. 2010 à 11:48
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

10 réponses

michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
9 févr. 2010 à 13:15
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
9 févr. 2010 à 14:17
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
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
9 févr. 2010 à 15:20
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
9 févr. 2010 à 15:28
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
9 févr. 2010 à 15:34
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
9 févr. 2010 à 15:36
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
9 févr. 2010 à 15:49
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
michel_m
Messages postés
16569
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mai 2022
3 280
9 févr. 2010 à 16:18
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
9 févr. 2010 à 16:52
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
Cocodenso
Messages postés
121
Date d'inscription
mardi 21 avril 2009
Statut
Membre
Dernière intervention
5 mars 2010
1
10 févr. 2010 à 11:48
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