[Résolu] Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,

Je monte actuellement (voir fichier ci-joint) une recherche à partir d’une variation de données choisies dans trois cellules de la feuille DétailPoste.
Il s’agit des cellules Type, Référence et Destinataire.

Pourriez-vous m’indiquer si le principe de montage que j’ai indiqué en vert dans la Macro Sub DetailPOSTE() est en bon raisonnement .
(à partir de l’information « Principe de recherche et d'affichage dans la feuille "Détail POSTE" »)... Il y a peut-être moyen de faire plus simple ?

Enfin, j’ai un souci dans le choix suivant car une ligne parasite s’affiche au résultat (elle est répétée deux fois comme l’exemple ci-dessous).
Pouvez-vous me donner la correction à apporter avant que j’avance dans cette programmation ? (et m’expliquer pourquoi s’affiche cette anomalie : ça me fera avancer dans VBA)

Cas à problème dans la partie :
'***** Affichage N°3 avec Type I5="" + REF C5<>"" + DEST C7="" (On affiche toutes les saisie TEE SHIRT avec une RÉFÉRENCE)

Exemple pour :
Rien en TYPE
Tee-shirt ABCD – Taille XL
Rien en Destinataire

J’obtiens deux fois la quantité de 5 0000, alors qu’elle n’est saisie qu’une fois dans la feuille Mvts

Mille mercis à l’avance pour votre réponse,
Webperegrino
 

Pièces jointes

  • CALCUL avec trois cellules à validation.xls
    73 KB · Affichages: 49
  • CALCUL avec trois cellules à validation.xls
    73 KB · Affichages: 53
  • CALCUL avec trois cellules à validation.xls
    73 KB · Affichages: 57
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Recherche selon données de trois cellules (choix dans le désordre... à ordonner

Bonjour,

En suivant pas à pas le déroulement du code, on s'aperçoit que la partie code '***** Affichage N°3 .... se déroule correctement et donne les résultats attendus. Mais ....

le traitement se poursuit dans la partie '***** Affichage N°4 ... car on teste entre autre
M.Range("G" & l).Value = P.Range("C7")

P.Range("C7") est vide, or en feuille MvtTS, G7,G8 et G9 sont vides également et donc le test est vrai et on inscrit une(ou des ) ligne supplémentaire.

Il faudrait rajouter dans le test :And P.Range("C7").Value <> "" puisque, comme le dit le commentaire:
On affiche toutes les saisie TEE SHIRT avec une RÉFÉRENCE et un DESTINATAIRE définis

A+
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Recherche selon données de trois cellules (choix dans le désordre... à ordonner

Le Forum,
Bonjour Paf,
C'est excellent !
Ta proposition fonctionne parfaitement.
Cela me permet de continuer dans les autres phases d'analyse et d'affichage.
Je suis très content de pouvoir compter sur l'un de vous sur ce Forum pour partager vos connaissances et ainsi me permettre d'avancer en VBA d'Excel.
Merci aussi pour ta dernière remarque :
- un "s" à "saisie" dans le corps de texte des explications de ces codes feront moins rager ma compagne si elle y mettait son œil car elle fut dans l'enseignement en activité principale, ... :p
Bien amicalement,
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : [Résolu] Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Le Forum,
Paf,
Une dernière question : rien d'urgent mais je bloque à nouveau pour la phase n° 8.
Mes trois critères sont définis, et je n'ai pas seulement ce qui est demandé avec TYPE.

Exemple :
- si je questionne avec TYPE = SORTIE, je ne devrais pas voir les lignes Entrée et Retour.

S'il vous plait de me donner la correction j'en serai ravi. Voir fichier évolué ci-joint et la phase 8 dans la Macro.
Le reste semble tourner à merveille.
Bonne soirée,
Webperegrino
 

Pièces jointes

  • CALCUL avec trois cellules à validation.xls
    80.5 KB · Affichages: 45
  • CALCUL avec trois cellules à validation.xls
    80.5 KB · Affichages: 48
  • CALCUL avec trois cellules à validation.xls
    80.5 KB · Affichages: 42

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : [Résolu] Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Le Forum et Paf,
Même avec ceci le résultat attendu n'est pas clair :
VB:
'***** Affichage N°8 avec Type I5<>"" + REF C5<>"" + DEST C7<>"" (On affiche toutes les saisie TEE SHIRT avec un TYPE I5/d, REF C5/b et DEST C7/g définis)
If P.Range("I5").Value <> "" And P.Range("C5").Value <> "" And P.Range("C7").Value <> "" Then
For l = 7 To dM
If P.Range("I5").Value <> "" And P.Range("C5").Value <> "" And P.Range("C7").Value <> "" And M.Range("D" & l).Value = P.Range("I5").Value And M.Range("B" & l).Value = P.Range("C5").Value And M.Range("G" & l).Value = P.Range("C7").Value Then
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Le Forum,
Paf,
Je pensais qu'avec cette dernière formulation en Affichage n° 8 l'affichage ne donnait que la liste des lignes ne contenant que :
- les lignes avec le type d'opération = à la donnée en cellule I5 (si je demande "Sortie" ça m'affiche aussi des lignes avec "Retour" par exemple)
- les lignes avec Référence = la donnée mise en C5 (là c'est bon)
- les lignes avec Destinataire = donnée de cellule I5 (là aussi ç'est bon.

Cela donc coince au niveau de l'extraction de la feuille Mvts de ce qui est annoncé en I5 de DétailPoste

Webperegrino
 

Paf

XLDnaute Barbatruc
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Re,

Toujours dans '***** Affichage N°4 avec... la ligne qui permet de tester dans quel type on se trouve est en commentaire.

comme elle ne filtre pas elle traite des cas prévus ailleurs.

A+


Edit : La ligne de type If P.Range("I5").Value... n'est pas en commentaire , elle n'existe pas !
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Re,

en remettant la ligne de test dans le cas 4 (If P.Range("I5").Value = "" And P.Range("C5").Value <> "" And P.Range("C7").Value <> "" Then) tout rentre dans l'ordre pour le cas 8

A+
 

Paf

XLDnaute Barbatruc
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Re
... et fin (?)

a priori le code suivant couvre les 8 cas ?

Code:
If P.Range("I3").Value = "TEE SHIRT" Then
 lP = dP
 For l = 7 To dM
    If M.Range("D" & l).Value = P.Range("I5").Value And M.Range("B" & l).Value = P.Range("C5").Value And M.Range("G" & l).Value = P.Range("C7").Value Then
        P.Range("B" & lP).Value = M.Range("C" & l).Value 'date
        P.Range("C" & lP).Value = M.Range("D" & l).Value  'Type
        P.Range("D" & lP).Value = M.Range("B" & l).Value 'Référence
        P.Range("E" & lP).Value = M.Range("E" & l).Value 'Quantitié
        P.Range("G" & lP).Value = M.Range("G" & l).Value   'Destinataire
        lP = lP + 1
    End If
 Next l
End If

Vous dites

A+
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Le Forum et Paf, BOnsoir,
Alors là, Paf, chapeau bas pour #9 et la belle présentation de #10 !
J'expérimente tout cela demain : cette nuit je repose mes neurones fatigués par toute cette recherche.
Bonne soirée
Cordialement,
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Bonjour Le Forum,
Bonjour Paf,
J'ai finalement adopté la solution #8 et #9.
En effet avec la vba de prise en compte des différents cas de remplissage de I5, C5 et C7 (aucune, certaines ou toutes...) l'affichage de l'extraction des lignes concernées est fidèle à ce qui figure dans la base.

Malheureusement ta proposition #10, pourtant très attirante par sa faible longueur, ne permet pas de tenir compte de tous les cas.
Par exemple :
l'affichage est faux lorsque une, deux ou trois de ces cellules sont vides.

Peut-être une prochaine version Vba aussi courte et efficace à 100% ?
Merci encore pour ta précieuse contribution à nous enseigner dans cette VBA d'Excel,
Cordialement,
Webperegrino
 

Paf

XLDnaute Barbatruc
Re : [Résolu] Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Re,

qu'appelez vous faux? Si c'est le fait que une cellule vide ne soit pas considérée comme jocker, la solution est alors dans liste de rajouter la valeur * et d'apporter cette modification à la proposition du post #10

If M.Range("D" & l).Value Like P.Range("I5").Value And M.Range("B" & l).Value Like P.Range("C5").Value And M.Range("G" & l).Value Like P.Range("C7").Value Then


exemple joint

A+
 

Pièces jointes

  • T shirt CALCUL avec trois cellules à validation-3.xls
    74.5 KB · Affichages: 36

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : [Résolu] Cherche selon données de 3 cellules (choix en désordre, VBA à ordonner)

Le Forum,
Paf,
C'est excellent !
J'ai placé ta dernière rectification dans mon application réelle, ai positionné un * dans les trois listes des paramètres, redéfini les trois formules dans validation-liste et ai procédé aux vérifications.
Tout fonctionne à 100 %.
Tu m'as fait découvrir l'utilisation du * dans une liste et du LIKE dans la codification.
Avant cela, par exemple pour I5= RIEN + C5 = RIEN + C7 = RIEN :
mes codes donnaient 10 lignes dans l'affichage et avec ta codification courte nous obtenions 0 ligne
Avec I5 = Entrée ou Sortie ou Retour, ta codification donnait 0 ligne à chaque fois et pour mes codes vba :
j'avais 3 lignes en Entrée et 3 lignes en Retour
et 4 lignes en Sortie
Avec * placé au lieu d’un vide tout rentre dans l’ordre, dans tous les cas.
Génial.
Encore merci Paf de t'être attardé sur ces derniers # et d'avoir peufiner la codification du #10
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu