Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Comment extraire des données d'une base à partir de 2 critères

arabemanantsoa

XLDnaute Nouveau
Bonjour,

Je souhaite extraire des données en fonction de 2 critères.

La première extraction selon une colonne "ODL" est ok.
Mais je souhaite extraire dans une seconde partie en fonction de "l'ODL" sélectionné également tout ceux qui ont un statut "validé".
Je voudrais rajouter cette deuxième condition
voici un extrait du code qui fonctionne avec un critère:

Private Sub ExtractionODL_Click()

'Déclaration des variables
Dim MonODL As Range
Dim MaListeODL As Range
Dim NbLignes As Long
Dim LigneActive As Long

'Affectation des variables
Set MaListeODL = Feuil13.Range("A2", Feuil13.Range("A1").End(xlDown))
NbLignes = MaListeODL.Rows.Count
LigneActive = 0

'On insère une nouvelle feuille
Sheets.Add
'Feuil13.Range("A1").EntireRow.Copy ActiveCell
Feuil13.Range("A1").Copy ActiveCell
Range("A2").Select

'On boucle chaque ODL se trouvant dans la liste
For Each MonODL In MaListeODL

'On se décale d'une ligne vers le bas
LigneActive = LigneActive + 1
'On cherche l'odl qui a été saisie dan la liste déroulante
If MonODL.Offset(0, 15).Value = Me.ListeODL Then
'Si mon ODL est trouvé, on récupère l'enregistrement
'MonODL.EntireRow.Copy ActiveCell
MonODL.Copy ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Next MonODL

End Sub



Merci d'avance
 

arabemanantsoa

XLDnaute Nouveau


Bonsoir,
Oui c'est un décalage.
Je voudrais que pour la deuxième extraction des statuts "VAL", le code prenne en compte ce 2ième critère.
Ci-joint le fichier
Merci d'avance
 

Pièces jointes

  • extraction test.xlsm
    605.3 KB · Affichages: 10

arabemanantsoa

XLDnaute Nouveau

Merci pour ta réactivité!
Dans la partie "extraction des statuts val" pour laquelle je n'ai pas encore écrit de code
je sélectionne l'ODL puis je sélectionne le statut et lorsque je lance cette extraction,
j'ai la liste de toutes les réf avec le statut et l'odl qui auront été sélectionné.
Exemple: si je sélectionne X07 ENPH02 ET je sélectionne le statut VAL
Alors Affiche toutes les réf de ces 2 critères
 

herve62

XLDnaute Barbatruc
Supporter XLD
Oui maintenant avec ton fichier c'est plus clair
Et d'après ce que j'ai vu .... il y a eu du copier/coller dans l'air , mais pas le suivi des noms de variables
J'ai commencé à corriger , regarde toi aussi d'un peu plus près dans le code de ton bouton ... tu devrais vite piger !!!
déjà tu cherches une valeur de combo qui n'est pas la bonne ? c'est encore de la 1ere extraction ???
et ce n'est que le début
Sinon ce n'est pas compliqué sinon que de vérifier en "pas à pas " toutes les variables au fur et à mesure
Je termine ça demain !!
Bonne fin de soirée
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour ; @arabemanantsoa
Voilà comme j'avais dit , tu t'es un peu mélangé les pinceaux !!
J'ai remis tes noms comme il faut , supprimé monstatut car si tu fais un offset pas besoin d'affecter une variable et en + tu bouclais à des millions !!!!!
( boucle imbriquée), rajusté l'offset pour la bonne variable ; Enfin ajouté un screenupdating en début et fin de sub pour que l'affichage durant traitement soit transparent
A toi e voir ci attaché
 

Pièces jointes

  • extraction test.xlsm
    600.9 KB · Affichages: 17

arabemanantsoa

XLDnaute Nouveau

Top je te remercie!
Ca marche nickel! Exactement ce que je cherchais
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Content pour toi, mais c'est le but du jeu
Sinon un conseil pour futur :
Quand on bug et cherche pourquoi en VBA , le VBE est bien fait , 2 méthodes :
Soit tu cernes déjà l'endroit (comme ici) , tu vas direct dans la sub du bouton et tu te mets en mode "debug"(F8) tu vas voir tes lignes s'éxécuter
1 par 1 et si tu mets ton curseur (souris) juste sur la variable déjà éxécutée tu vas voir sa valeur , tu continue ( c'est le pas à pas) F8 ..etc c'est comme ça que j'ai vu de suite toutes tes erreurs de variables
Sinon autre , moi j'appelle méthode entonnoir car des fois F8 ... c'est long de toujours appuyer xx fois
Tu mets un "point d'arrêt " : clic dans la marge > rond et ligne devient en "bordeaux"
tu lances depuis le début , la macro s'arrête à cette ligne , tu sais que tout avant fonctionne reste à controler tes variables
tu mets un 2eme point plus loin et donc quand arrêt au 1er tu fais "execution" > continuer
si tu as des erreurs , tu remontes ton 2eme point ..etc ( d'ou la méthode entonnoir on resserre le diag) et pour finir en "pas à pas" F8
Tu vas gagner en efficacité et compréhension ... et en temps passé ( pour moi ce matin 10min)
Bonne continuation
 

herve62

XLDnaute Barbatruc
Supporter XLD
Un petit exo : reprend ton ancien prog et execute le en mode débug avec les points d'arrêts
Une image qui te montre comment j'ai démarré ( le mode débug) et vite cerné le Pb : 1) la boucle next , 2) la valeur de variable , cela ne correspond pas
Bon amusement et bonne nuit !!
@+
 

Pièces jointes

  • debug.jpg
    99.4 KB · Affichages: 19

Discussions similaires

Réponses
2
Affichages
699
Réponses
4
Affichages
451
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…