Macro extraction de données avec critères
Bonjour je suis neophyte sur excel et je sollicite votre aide pour une macro. J'ai une macro sur un boutton de commande (issu du userform formulaire d'extraction des données ) pour extraire des données d'un tableau à partir d'un critère : EnsembleSup. J'ai une liste d'ensemble sup (correspondant aux différents types d'ensemble sup dans mon tableau excel) et avec une liste déroulante je sélectionne cet ensemble sup.
Voici le code pour la macro d'extraction:
Sub btnExtraction_Click()
'Déclaration des Variables'
Dim MonEnsembleSup As Range
Dim ListeEnsembleSup As Range
Dim NbLignes As Long
Dim LigneActive As Long
'Affectation des variables'
Set ListeEnsembleSup = Feuil11.Range("A2", "A500")
NbLignes = ListeEnsembleSup.Rows.Count
LigneActive = 0
'On insere dans une nouvelle feuille'
Sheets.Add
Feuil11.Range("A1").EntireRow.Copy ActiveCell
Range("A2").Select
'On boucle chaque ensemble sup se trouvant dans la liste'
For Each MonEnsembleSup In ListeEnsembleSup
'On se décale d'une ligne vers le bas'
LigneActive = LigneActive + 1
'On recherche l'ensemble sup qui a été saisie dans la liste déroulante'
If MonEnsembleSup.Offset(0, 3).Value = Me.cboEnsembleSup.Value Then
'Si l'ensemblesup est trouvée, on récupère'
MonEnsembleSup.EntireRow.Copy ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Next MonEnsembleSup
End SubCe code marche mais je voulais le faire évoluer afin d'avoir deux critères : Version et EnsembleSup
Sub btnExtraction_Click()
'Déclaration des Variables'
Dim MaVersion As Range
Dim ListeVersion As Range
Dim MonEnsembleSup As Range
Dim ListeEnsembleSup As Range
Dim NbLignes As Long
Dim LigneActive As Long
'Affectation des variables'
Set ListeVersion = Feuil11.Range("A2", "A500")
Set ListeEnsembleSup = Feuil11.Range("A2", "A500")
NbLignes = ListeEnsembleSup.Rows.Count
LigneActive = 0
'On insere dans une nouvelle feuille'
Sheets.Add
Feuil11.Range("A1").EntireRow.Copy ActiveCell
Range("A2").Select
'On boucle chaque ensemble sup se trouvant dans la liste'
For Each MonEnsembleSup In ListeEnsembleSup
'On se décale d'une ligne vers le bas'
LigneActive = LigneActive + 1
'On boucle chaque version se trouvant dans la liste'
For Each MaVersion In ListeVersion
'On recherche l'ensemble sup qui a été saisie dans la liste déroulante'
If MonEnsembleSup.Offset(0, 3).Value = Me.cboEnsembleSup.Value Then
'On recherche la version qui a été saisie dans la liste déroulante'
If MaVersion.Offset(0, 7).Value = Me.cboVersion.Value Then
'Si l'ensemblesup est trouvée, on récupère'
MonEnsembleSup.EntireRow.Copy ActiveCell
ActiveCell.Offset(1, 0).Select
End If
End If
Next MaVersion
Next MonEnsembleSup
End SubLorsque j'exécute ce code, la macro tourne à l'infinie et les critères ne sont pas respectés. Je sollicite votre aide afin de corriger ma boucle et plus s'il le faut.
Bonjour ah213 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment
- Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).
Merci de votre participation
Cordialement
Bonsoir,
A vous lire il y a deux types de données dans une même colonne ?
@ bientôt
LouReeD
Bonjour, merci pour vos réponses. C'est noté.
Pour les données je ne pourrais vous répondre je ne sais pas. J'ai finalement opté pour l'utilisation de filtre avancés pour l'extraction de données selon des critères.
Bonsoir,
merci pour le retour, ceci nous évite de continuer à chercher et à se poser trop de question !
@ bientôt
LouReeD