RECHERCHEV avec condition en VBA

lechti31

XLDnaute Occasionnel
Bonjour
J'ai besoin d'aide sur une rechercheV avec condition
Dans le fichier joint, je voudrais, en appuyant sur le bouton, faire une rechercheV de la valeur de la colonne O
dans la matrice A3:F7, jusque la tout va bien.
Ce que je n'arrive pas a faire c'est de prendre en compte aussi les valeurs de la colonne T.
J'aimerai que quand il trouve la valeur de la colonne O , il regarde si les valeurs des colonnes F et T sont identiques pour copier la valeur de la colonne D dans la colonne R.
Par exemple dans la cellule O3 j'ai la valeur 10 dans la cellule A3 j'ai aussi la valeur 10 sauf que les valeur des cellules F3 et T3 sont différentes donc il ne doit pas remplir la cellule R3 mais continuer jusqu'a la cellule A5 car la les cellules A5 et O3 sont identique mais aussi les cellules F5 et T3 donc dans la cellule R3 il copie la cellule E5.
J'espere avoir ete clair
Merci pour votre aide
 

Pièces jointes

  • Essais recherchev_vba.xlsm
    19.9 KB · Affichages: 69

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir lechti31,

Voir l'essai dans le fichier joint (pas certain d'avoir bien compris la demande :confused:)

errata : un mauvais copier/coller a provoqué une interversion d'indice. C'est corrigé dans la V1a.
 

Pièces jointes

  • lechti31-Essais recherchev_vba- v1a.xlsm
    21.5 KB · Affichages: 117
Dernière édition:

lechti31

XLDnaute Occasionnel
Bonjour mapomme et merci
Tu as tout a fait répondu à ma question c'est exactement ce que je cherchais
Sauf que quand je mets le code dans mon vrai fichier ça marche pas
J'ai plusieurs feuilles renommées et la feuille que je dois faire cette macro s'appelle "quantite".
donc le while Feuil1 ne fonctionne pas si je mets while quantite il y a un message d'erreur
De plus toutes mes données sont au format texte puisque j'ai a la fois des chiffres mais aussi des lettres
Quand je copie mes données dans le fichier avec ta macro ça fonctionne pas sur toutes les données.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour lechti31,

Pour ce qui est de la référence de la feuille, au lieu de mettre With Feuil1 :
  1. dans l'environnement VBA, dans la fenêtre "Projet - VBAProject", repérer la feuille qui s'appelle "quantité"
  2. noter à quelle Feuiln, cette feuille "quantité" est associée
  3. remplacer dans le code "Feuil1" par "Feuiln"

Pour ce qui est du type de données, je préfère travailler avec un échantillon de votre fichier réel. Ou au pire et en dernière extrémité, avec avec le retour de mon fichier lechti31-Essais recherchev_vba- v1a.xlsm avec les données qui aboutissent à un résultat erroné.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir lechti31,

Voir le fichier joint.
Si tu as beaucoup de lignes de données dans tes tableaux réels (plus de quelques dizaines de lignes), me le faire savoir. Je n'ai pas utilisé une méthode très rapide. Au delà de quelques dizaines de lignes, je changerai de méthode.
 

Pièces jointes

  • lechti31-Essais recherchev_vba- v2.xlsm
    24.2 KB · Affichages: 40
Dernière édition:

lechti31

XLDnaute Occasionnel
Bonsoir mapomme
Waouh merci pour cette réponse ça fonctionne très très bien, en effet je peux avoir jusqu'à 800 références donc la V3 marche nickel
donc si je comprend bien le code stock toutes les valeurs dans des tableaux et les analyse
Juste une question à quoi sert ce sigle "¤" et comment le fais tu
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir lechti31 ;),
si je comprend bien le code stock toutes les valeurs dans des tableaux et les analyse
Juste une question à quoi sert ce sigle "¤" et comment le fais tu

Effectivement tout est stocké en mémoire dans des tableaux ou une structure de type dictionary. Un dictionary est un objet un peu particulier. Grossièrement ça pourrait ressembler à un tableau à deux colonnes dont la première colonne est une clef qui référence une ligne unique du dictionary ; l'information correspondant à cette clef est stocké en deuxième colonne. On accède à un élément du dictionary via une clef et non pas un numéro de ligne comme pour un tableau normal.

La clef dans notre cas fait appel à deux champs : d'une part la référence article et d'autre part la référence du plateau. Pour construire la clef, on concatène les deux champs avec comme séparateur le caractère ¤ (que j'obtiens sur mon clavier par la combinaison des deux touches AltGr + la touche $).

En utilisant le caractère ¤, je présuppose que ce caractère rare n'est présent dans aucun des champs article et plateau (sinon je devrai en changer).
 

lechti31

XLDnaute Occasionnel
Merci Mapomme
Une dernière petite question, je cherche a faire la somme dans la colonne R avec la formule
=SOMMEPROD(($A$3:$A$28=O27)*($B$3:$B$28=P27)*($F$3:$F$28=T27)*($D$3:$D$28)*1) mais en VBA.
j'ai regardé sur le net mais je n'y arrive pas avec cette formule "resul = Evaluate('=SUMPRODUCT...."
Peux tu m'aider encore un fois
Merci
 

Pièces jointes

  • lechti31-Essais recherchev_vba- v3.xlsm
    80.8 KB · Affichages: 46

Discussions similaires