XL 2010 creation d un code vba pour extraire des lignes de données par rapport à un critere

polyteis

XLDnaute Occasionnel
bonsoir

je viens vers vous pour élucider ma demande.
un classeur composé de 2 onglets ( base et extraction)
à partir d'une cellule fixe (c3) dans l'onglet extraction , j'aimerai un code vba qui balaye la colonne b de l'onglet base et rapatrie lorsque la condition est vraie les données à partir de la cellule E7 à I7 dans l'onglet extraction.

dans l'attente de vous lire, merci par avance
 

Pièces jointes

  • affichage en vba.xlsm
    10 KB · Affichages: 22

Jacky67

XLDnaute Barbatruc
bonsoir

je viens vers vous pour élucider ma demande.
un classeur composé de 2 onglets ( base et extraction)
à partir d'une cellule fixe (c3) dans l'onglet extraction , j'aimerai un code vba qui balaye la colonne b de l'onglet base et rapatrie lorsque la condition est vraie les données à partir de la cellule E7 à I7 dans l'onglet extraction.

dans l'attente de vous lire, merci par avance
Bonjour,
Une proposition en pj .
Le lancement se fait au changement de C3 de la feuille extraction
 

Pièces jointes

  • affichage en vba.xlsm
    20.2 KB · Affichages: 16

polyteis

XLDnaute Occasionnel
merci
je vais tester cela

bonjour,

est ce que je peux te solliciter une nouvelle fois
merci
re bonjour,

je te sollicite de nouveau car ta macro me plait bien.
je t'adresse mon fichier remodelé . 3 onglets
Voici ce que j'aimerai faire, dans l'onglet conduite disposé d'une macro quasi identique que pour extraction mais basé sur le nom.
voir si il est possible de mettre en place une liste de validation ( il y aura environ 20 possibilités), est ce possible par vba ou pas.
pour info mon futur fichier base dépasse les 7000 lignes.

merci beaucoup
 

Pièces jointes

  • Extraction sous condition V2_111.xlsm
    32.6 KB · Affichages: 9

Phil69970

XLDnaute Barbatruc
Bonjour @polyteis

Piste et solution.....
1)Est ce que cela fonctionne sur le fichier que j'ai posté ?
Chez moi le fichier fonctionne sur excel 2010 64 bits

2)Si le 1) est ok cela provient soit d'une erreur de copie soit de la version d'excel.

3) C'est quoi le N° d'erreur et ta version excel
j'ai eu cette erreur :

4)Le fichier fourni n'est peut être pas assez représentatif, c'est à dire qu'il n'est pas une réplique fidèle du vrai fichier par exemple le nom des onglets n'est pas le bon ou les cellules ne sont pas au même emplacement (c'est un classique ....)
*Il y a un espace sur le nom de ton/tes onglets exemple "Conduite " (avec un espace à la fin) c'est aussi un grand classique....

5)Les noms internes ne correspondent pas voir image
1623131388007.png

La feuille 1 correspond à la feuille "base"
La feuille 2 correspond à la feuille "extraction"
La feuille 3 correspond à la feuille "conduite"

6)Si aucune des pistes précédente ne peut réussir à faire fonctionner le fichier poste un fichier plus proche de la réalité.

@Phil69970
 
Dernière édition:

polyteis

XLDnaute Occasionnel
Bonjour @polyteis

Piste et solution.....
1)Est ce que cela fonctionne sur le fichier que j'ai posté ?
Chez moi le fichier fonctionne sur excel 2010 64 bits

2)Si le 1) est ok cela provient soit d'une erreur de copie soit de la version d'excel.

3) C'est quoi le N° d'erreur et ta version excel


4)Le fichier fourni n'est peut être pas assez représentatif, c'est à dire qu'il n'est pas une réplique fidèle du vrai fichier par exemple le nom des onglets n'est pas le bon ou les cellules ne sont pas au même emplacement (c'est un classique ....)
*Il y a un espace sur le nom de ton/tes onglets exemple "Conduite " (avec un espace à la fin) c'est aussi un grand classique....

5)Les noms internes ne correspondent pas voir image
Regarde la pièce jointe 1107830
La feuille 1 correspond à la feuille "base"
La feuille 2 correspond à la feuille "extraction"
La feuille 3 correspond à la feuille "conduite"

6)Si aucune des pistes précédente ne peut réussir à faire fonctionner le fichier poste un fichier plus proche de la réalité.

@Phil69970
re bonjour,

l'erreur était la suivante :
erreur d'exécution 13
incompatibilité de type

je pense avoir trouvé "la solution", j 'aurai du y songer bien avant car j'avais déjà eu ce problème.
dans mon fichier de 6733 lignes, dans les 2 colonnes B et C de l'onglet base des cellules contenaient #valeur
j ai corrigé en remplaçant par NC

cela fonctionne , je vais faire tourner le programme

2 petites choses pour terminer

- comme j 'aime mettre des remarques dans les vba , peux tu me dire ou se construit la liste de validation ?

la deuxième question est optionnelle
- est il possible que la dernière ligne d'une recherche soit symbolisée par un tiret ? (je m'explique je fais un choix d’opération, le programme en trouve 6, et donc écrit les 6 lignes et en 7 ligne place un tiret qui symbolise " j'ai tout trouvé")


merci
 

Phil69970

XLDnaute Barbatruc
Re

ou se construit la liste de validation ?
C'est ce code qui sur chaque activation de la feuille construit la liste et on supprime l'ancienne liste et on ajoute la nouvelle liste crée (toute neuve.... avec les dernières valeurs actualisées) ;)
VB:
Private Sub Worksheet_Activate()
Dim D, C As Range
Set D = CreateObject("Scripting.Dictionary")
For Each C In Feuil1.Range("C4:C" & Feuil1.Cells(Feuil1.Rows.Count, "C").End(xlUp).Row): D(C.Value) = "": Next C
    [C7].Validation.Delete
    [C7].Validation.Add xlValidateList, Formula1:=Join(D.keys, ",")
End Sub

la deuxième question est optionnelle
J'ai pas tout compris mais comme la liste est reconstruite à chaque fois je vois pas trop ou est le problème.

Et si tu parles du résultat de l'extraction on pourrait mettre un message comme quoi l'extraction c'est bien passé mais cela risque d’être vite lassant
1623135193825.png

VB:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim DerligSrc&, DerligDst&
DerligSrc = Worksheets("base").Range("B" & Rows.Count).End(xlUp).Row
With Worksheets("Conduite")
    DerligDst = .Range("E" & Rows.Count).End(xlUp).Row + 1
    .Range("E11" & ":I" & DerligDst).ClearContents
    For i = 4 To DerligSrc
        If .[C7].Value = Worksheets("base").Range("C" & i) Then
            DerligDst = .Range("E" & Rows.Count).End(xlUp).Row + 1
            .Range("E" & DerligDst & ":I" & DerligDst) = Worksheets("base").Range("B" & i & ":F" & i).Value
        End If
    Next i
    '*********
    'Le message est ici
    MsgBox "Extraction réussie !", vbInformation, "Résultat extraction"
    '*********
End With
End Sub

Après c'est toi qui vois :rolleyes:

@Phil69970
 

polyteis

XLDnaute Occasionnel
re,
je vais inserer ta ligne de message et je verrais si ce sert vraiment.
j'ai un autre soucis, j 'ai deroulé des recherches, plusieurs fois ect, .... tout se passe bien
j'enregistre le fichier .
je l'ouvre de nouveau et là j'obtiens
message suivant
excel a rencontré un contenu illisible dans RAP_sous_condition_V3-4.xlms. voulez vous recuperer le contenu du classeur? si la source du classeur est fiable cliquez sur oui
je fais oui
autre message

excel a pu ouvrir le fichier en supprimant ou réparant le contenu illisible

Fonction supprimée: Validation des données dans la partie /xl/worksheets/sheet2.xml
Fonction supprimée: Validation des données dans la partie /xl/worksheets/sheet3.xml
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE