IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche et importation de données avec la methode autofilter [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut Recherche et importation de données avec la methode autofilter
    Bonjour le forum,
    Je viens vers vous car je suis un peu en difficulté je cherche désespérément une manière de pouvoir adapter un code que j’ai trouvé sur le forum réalisé par « Mercatog » le principe et bien et je l’ai pratiquement compris mais je n’arrive pas à l’adapter.
    Je vous explique j’ai deux bases de données une ou je veux importer mes données qui s’appelle « Pilotage quotidien Chafik » et celle d’où je veux apporter les données « Fichier Stock » dans un premier temps je voudrais réaliser un filtre sur la basse d’où j’importe mes données « Fichier Stock » sur la colonne « D » qui est le code gestion les condition du filtre se trouve dans la base « Pilotage quotidien Chafik » feuil PARAMETRES colonnes L28 à L39 pour qu’il y ait moins de ligne a traiter méthode autofilter puis importer des données par rapport à un code article qui se trouve en colonne « B5 :B » dans ma basse « Pilotage quotidien Chafik » et en « B2 :B » dans ma basse « Fichier Stock » et renvoyer les valeurs des colonnes « AH,AK,AN,AQ,AT,AW,AZ,BC,BF,BI,BL,BO,H » de la basse « Fichier Stock » respectivement vers les colonnes « X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ » de ma basse « Pilotage quotidien Chafik »
    J’ai essayé d’adapter ce code mes pas évident je n’y arrive pas, alors si quelqu’un peut m’aider sa serait super

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Sub Extraction()
     
     
    Dim WB_Principal, classeur3 As Workbook
    Dim Ws, feuil2, feuil3 As Worksheet
    Dim LastLig, LastLig1 As Long
    Dim i As Byte
     
     Application.ScreenUpdating = False
     
        ' Amène le classeurs cible en avant plan, celui-ci devient le [ ActiveWorkbook ]
                Set WB_Principal = ActiveWorkbook
            Set feuil2 = WB_Principal.Worksheets("J+5")
            Set feuil3 = WB_Principal.Worksheets("PARAMETRES")
     
     Set classeur3 = Workbooks.Open("C:\Users\A172243\Desktop\Chafik\Fichier Stock.xlsx", _
            False, True)
    Set Ws = classeur3.Worksheets("Feuil1")
     
    With feuil2
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        LastLig1 = .Cells(.Rows.Count, "D").End(xlUp).Row
        With Ws.Range("A1:BO" & LastLig)
            .AutoFilter Field:=4, Criteria1:=feuil3.Range("D5")
            For i = 5 To LastLig1
            .AutoFilter Field:=2, Criteria1:=feuil2.Range("B5" & i)
            If Ws.Range("B2:B" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                Ws.Range("AH2:BO" & LastLig).SpecialCells(xlCellTypeVisible).Copy feuil2.Range("X" & i)
            Else
                feuil2.Range("X" & i & ":BO" & i).ClearContents
            End If
        Next i
        End With
        .AutoFilterMode = False
    End With
    Set Ws = Nothing
    End Sub
    Je vous joins les deux fichiers peut être que ce sera plus simple de comprendre

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Ceci ne répond pas à ta/tes questions, mais prends-en note
    Les déclarations de variables, comme tu le fais n'est pas bonne.
    Si tu ne mets pas explicitement le type de variable, celle-ci devient Variant par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim WB_Principal, classeur3 As Workbook  ' WB_Principal est Variant
    Dim Ws, feuil2, feuil3 As Worksheet  'Ws et feuil2 sont Variant
    Dim LastLig, LastLig1 As Long  'LastLig est Variant
    La bonne méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim WB_Principal As Workbook, classeur3 As Workbook
    Dim Ws As Worksheet, feuil2 As Worksheet, feuil3 As Worksheet
    Dim LastLig As Long, LastLig1 As Long

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Bonjour parmi,

    Je savais pas, je pensé que sa revener au même merci de me le rappeller sa m'évitera de m'enméler encore plus les pinceaux

    En attendent je continue mes recherches et mes tentatives d'adaptation!

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Bonjour tout le monde,

    J'ai continuer à éssayer de faire marcher mon code hier soiret j'y suis presque mais j'ai un probléme ca me copie rien, et j'ai une erreur qui s'affiche quand il ne trouve pas de reférence équivalente je vous joins le nouveau fichier "Pilotage Quotidien chafik" et le "Fichier stock" je l'ai déjà posté en ésperant que quelqu'un vera mon appelle "HELP" et Mercatog qui comprendra peut-être mieux le principe car je reprend sont code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Option Explicit
    Sub Extraction()
     
    Dim WB_Principal As Workbook, classeur3 As Workbook
    Dim Ws As Worksheet, feuil2 As Worksheet, feuil3 As Worksheet
    Dim LastLig As Long, LastLig1 As Long
    Dim i As Long
     
     
     Application.ScreenUpdating = False
     
        ' Amène le classeurs cible en avant plan, celui-ci devient le [ ActiveWorkbook ]
                Set WB_Principal = ActiveWorkbook
            Set feuil2 = WB_Principal.Worksheets("J+5")
     
     Set classeur3 = Workbooks.Open("C:\Users\A172243\Desktop\Chafik\Fichier Stock.xlsx", _
            False, True)
    Set Ws = classeur3.Worksheets("Feuil1")
     
    With Ws
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "AH").End(xlUp).Row
        LastLig1 = .Cells(.Rows.Count, "B").End(xlUp).Row
        With Ws.Range("A1:CZ" & LastLig)
     
            .AutoFilter Field:=4, Criteria1:=Array( _
            "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
            :=xlFilterValues
     
            For i = 5 To feuil2.Range("B65536").End(xlUp).Row
            .AutoFilter Field:=2, Criteria1:=feuil2.Range("B" & i)
            If Ws.Range("B5:B" & LastLig1).SpecialCells(xlCellTypeVisible).Count > 1 Then
                Ws.Range("AH2:BO" & LastLig).SpecialCells(xlCellTypeVisible).Copy feuil2.Range("X" & i & ":AI" & i)
            Else
                feuil2.Range("X" & i & ":AI" & i).ClearContents
            End If
        Next i
        End With
        .AutoFilterMode = False
    End With
    Set Ws = Nothing
    End Sub
    Merci d'avance!!!Pièce jointe 162813

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Toujours dans la panade j'ai une (d'exécution 1004) car a un moment entre les deux il y a des qui existe dans ma base "pilotage Quotidien CHAFIK" et pas dans ma base "Fichiers Stock" donc ca bloc, voici le code avec quelque modifications! Je continu mon périple et vous tiens informé en espérant que d'ici il y ait quelques lumières pour m'éclairer !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
    Sub Extraction()
     
    Dim WB_Principal As Workbook, classeur3 As Workbook
    Dim Ws As Worksheet, feuil2 As Worksheet, feuil3 As Worksheet
    Dim LastLig As Long, LastLig1 As Long
    Dim i As Long
    Dim maPlage As Range, maPlage1 As Range
     
     Application.ScreenUpdating = False
     
        ' Amène le classeurs cible en avant plan, celui-ci devient le [ ActiveWorkbook ]
                Set WB_Principal = ActiveWorkbook
            Set feuil2 = WB_Principal.Worksheets("J+5")
     
     Set classeur3 = Workbooks.Open("C:\Users\A172243\Desktop\Chafik\Fichier Stock.xlsx", _
            False, True)
    Set Ws = classeur3.Worksheets("Feuil1")
     
    With Ws
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
        With Ws.Range("A1:CZ" & LastLig)
     
            .AutoFilter Field:=4, Criteria1:=Array( _
            "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
            :=xlFilterValues
     
                    For i = 5 To feuil2.Range("D65536").End(xlUp).Row
     
            .AutoFilter Field:=2, Criteria1:=feuil2.Range("B" & i)
            If Ws.Range("B5:B" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
     
                Set maPlage = Ws.Range("AH2:AH,AK2:AK,AQ2:AQ,AT2:AT,AW2:AW,AZ2:AZ,BC2:BC,BF2:BF,BI2:BI,BL2:BL,BO2:BO,H2:H" & LastLig)
                Set maPlage1 = feuil2.Range("X5:X,Y5:Y,Z5:Z,AA5:AA,AB5:AB,AC5:AC,AD5:AD,AE5:AE,AF5:AF,AG5:AG,AH5:AH,AI5:AI,AJ5:AJ" & LastLig)
     
                maPlage.SpecialCells(xlCellTypeVisible).Copy Destination:=maPlage1
            Else
                feuil2.Range("X" & i & ":AJ" & i).ClearContents
            End If
        Next i
        End With
        .AutoFilterMode = False
    End With
       Exit Sub
    Set feuil2 = Nothing
    End Sub
    Amicalement

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je ne pense pas que tu puisse faire ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Set maPlage = Ws.Range("AH2:AH,AK2:AK,AQ2:AQ,AT2:AT,AW2:AW,AZ2:AZ,BC2:BC,BF2:BF,BI2:BI,BL2:BL,BO2:BO,H2:H" & LastLig)
                Set maPlage1 = feuil2.Range("X5:X,Y5:Y,Z5:Z,AA5:AA,AB5:AB,AC5:AC,AD5:AD,AE5:AE,AF5:AF,AG5:AG,AH5:AH,AI5:AI,AJ5:AJ" & LastLig)
    Tu dois définir le nombre de lignes à chaque adresse et non pas une seule fois à la fin, du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maPlage = ws.Range("AH2:AH" & Lastlig, "AK2:AK" & Lastlig,....)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Bonsoir Parmi,

    Merci pour ta réponse ça me servira pour la suite de mon projet! Par contre je me dit que je m'embête un peut avec la boucle et que je pourrais tout simplement faire un "rechercheV Vlookup" de ces différentes colonnes en fonction de mon "code article" j'ai essayé de le faire en regardant ce qu'il y avait dans les différents forum mais je n'ai pas réussi pourrait tu m'aider

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si tu passes ta macro en pas à pas, tu devrais voir où ça coince.
    Sans fichier, c'est plutôt difficile de voir ce que la macro fait et le résultat...
    Peut-être que les filtres retournent une plage vide donc aucune copie...

    Si tu pouvais joindre tes fichiers (avec données bidons si nécessaire) au format xlsx, et bien expliquer ce que cette macro devrait faire, ça devrait aider.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    ce que je voudrais c'est faire une recherchev sur mon "fichier stock" pour importer des colonnes (informations) dans mon fichiers "pilotages quotidien chafik" la colonne B de mon "fichier stock" intitulé "Article" a les mêmes références ex"000011451;00001654" que ma colonne B de mon fichiers "Pilotages quotidien chafik" et je voudrais grâce a ces codes article importer les colonnes AH,AK,AN,AQ,AT,AW,AZ,BC,BF,BI,BL,BO,H du "fichier stock" respectivement dans cette ordre dans les colonnes X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ de mon fichier "pilotage quotidien chafik" afin que les cellules se positionne dans ce fichier en fonction du code article de référence! j’espère que les fichiers joins marcherons et que tu m'a compris j'essayerai d'en poster un dès que ça marchera!

    merci encore Chafoo!
    Fichiers attachés Fichiers attachés

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Re bonjour tout le monde,

    J'ai continuer mon periple malheureusement je suis pas arrivé au bout de mon objectif,
    j'ai reussi a trouvé un code que j'ai adapter qui tourne sans erreur étonant mes qui me renvoi aucune valeur et surtout j'ai l'impréssion qui tourne en ronds donc pas cool si quelqu'un peut m'aider sa serait super!

    voila le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Option Explicit
     
    Sub Recopie()
     
    Dim LigSource As Long, LigCherch As Long, LastLig As Long
    Dim DerLigSource As Long, DerLigCherch As Long
    Dim Wk As Worksheet
     
               Set Wk = Sheets("Fichier stock")
     
    Application.ScreenUpdating = False
    '-------------------------------Filtre de ma feuille "fichier stock" en focntion du code gestion---------------------
     
    With Wk
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With Wk.Range("A1:CZ" & LastLig)
     
            .AutoFilter Field:=4, Criteria1:=Array( _
            "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
            :=xlFilterValues
        End With
       End With
     
    '--------------------------------recherche de valeur identique entre les deux colonnes "B" et transfert des données----
     
        DerLigSource = Wk.Range("B" & Rows.Count).End(xlUp).Row
        With Sheets("J+5")
            DerLigCherch = .Range("B" & Rows.Count).End(xlUp).Row
                For LigCherch = 5 To DerLigCherch
                    Debug.Print .Cells(LigCherch, "J"),
                    For LigSource = 2 To DerLigSource
                        If .Cells(LigCherch, "B") = Wk.Cells(LigSource, "B") Then
                            Wk.Cells(LigCherch, "B").Offset(0, 22) = Wk.Cells(LigSource, "B").Offset(0, 32)   'ligne AA vers x
                            Wk.Cells(LigCherch, "B").Offset(0, 23) = Wk.Cells(LigSource, "B").Offset(0, 35)   'ligne AK vers y
                            Wk.Cells(LigCherch, "B").Offset(0, 24) = Wk.Cells(LigSource, "B").Offset(0, 38)   'ligne AN vers Z
                            Wk.Cells(LigCherch, "B").Offset(0, 25) = Wk.Cells(LigSource, "B").Offset(0, 41)   'ligne AQ vers AA
                            Wk.Cells(LigCherch, "B").Offset(0, 26) = Wk.Cells(LigSource, "B").Offset(0, 44)   'ligne AT vers AB
                            Wk.Cells(LigCherch, "B").Offset(0, 27) = Wk.Cells(LigSource, "B").Offset(0, 47)   'ligne AW vers AC
                            Wk.Cells(LigCherch, "B").Offset(0, 28) = Wk.Cells(LigSource, "B").Offset(0, 50)   'ligne AZ vers AD
                            Wk.Cells(LigCherch, "B").Offset(0, 29) = Wk.Cells(LigSource, "B").Offset(0, 53)   'ligne BC vers AE
                            Wk.Cells(LigCherch, "B").Offset(0, 30) = Wk.Cells(LigSource, "B").Offset(0, 56)   'ligne BF vers AF
                            Wk.Cells(LigCherch, "B").Offset(0, 31) = Wk.Cells(LigSource, "B").Offset(0, 59)   'ligne BI vers AG
                            Wk.Cells(LigCherch, "B").Offset(0, 32) = Wk.Cells(LigSource, "B").Offset(0, 62)   'ligne BL vers AH
                            Wk.Cells(LigCherch, "B").Offset(0, 33) = Wk.Cells(LigSource, "B").Offset(0, 65)   'ligne BO vers AI
                            Wk.Cells(LigCherch, "B").Offset(0, 34) = Wk.Cells(LigSource, "B").Offset(0, 6)    'ligne H  vers AJ
                        End If
                    Next LigSource
                Next LigCherch
        End With
    End Sub
    voila le code j'effectue dans un premier temps un filtre pour qu'il y ait moin de ligne a traiter et reduire la donnée et après je transfert les données des colonnes respectives je continue mon periples!

    Parmi j'espere que t'a compris ce que j'ai essayé de t'expliqué dans mon fichier!

    J'ai modifié ces deux lignes de code qui étaient fausses mais ça ne change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print .Cells(LigCherch, "B"),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(LigCherch, "B").Offset(0, 34) = Wk.Cells(LigSource, "B").Offset(0, 6) 'ligne H vers AJ

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je ne me suis pas préoccupé d'ouvrir/fermer le fichier "Fichier Stock.xls".
    Donc ouvre-le en premier et roule la macro

    Tu semblais sur la bonne voie, mais je pense que ce sont les With...End With et le ws qui causaient problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub Recopie()
     
        Dim LigSource As Long, LigCherch As Long, LastLig As Long
        Dim DerLigSource As Long, DerLigCherch As Long
        Dim CurBook As Workbook, DataBook As Workbook
        Dim wk As Worksheet
        Dim Code
        Dim Recherche As Range
     
        Set CurBook = ThisWorkbook
     
        Windows("Fichier stock.xls").Activate
        Set DataBook = ActiveWorkbook
     
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        '-------------------------------Filtre de ma feuille "fichier stock" en focntion du code gestion---------------------
     
        With DataBook.Sheets("Feuil1")
            .AutoFilterMode = False
            .Rows(1).AutoFilter Field:=4, Criteria1:=Array( _
                "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
                :=xlFilterValues
            DerLigSource = .Range("B" & Rows.Count).End(xlUp).Row
     
            For LigSource = 2 To DerLigSource
                If .Rows(LigSource).Hidden = False Then
                    Code = .Range("B" & LigSource)
                    'Recherche où se trouve le code
                    Set Recherche = CurBook.Sheets("J+5").Columns("B").Find(Code, LookIn:=xlValues, LookAt:=xlWhole)
                    If Not Recherche Is Nothing Then
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 24) = .Cells(LigSource, 34)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 25) = .Cells(LigSource, 37)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 26) = .Cells(LigSource, 40)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 27) = .Cells(LigSource, 43)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 28) = .Cells(LigSource, 46)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 29) = .Cells(LigSource, 49)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 30) = .Cells(LigSource, 52)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 31) = .Cells(LigSource, 55)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 32) = .Cells(LigSource, 58)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 33) = .Cells(LigSource, 61)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 34) = .Cells(LigSource, 64)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 35) = .Cells(LigSource, 67)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 36) = .Cells(LigSource, 8)
                    End If
                End If
            Next
        End With
     
        CurBook.Activate
     
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
     
        Set DataBook = Nothing
        Set CurBook = Nothing
    End Sub

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Bonjour Parmi,

    J'ai reussi a faire marcher la macro en l'adaptant c'est super je te remercie vu que j'ai encore pas mal d'étapes dans le genre! voila la macro elle pourra peut etre servir a d'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Option Explicit
     
    Sub Recopie()
     
        Dim LigSource As Long, LigCherch As Long, LastLig As Long
        Dim DerLigSource As Long, DerLigCherch As Long
        Dim CurBook As Workbook
        Dim wk As Worksheet
        Dim Code
        Dim Recherche As Range
     
        Set CurBook = ThisWorkbook
     
                With Application
            .Calculation = xlManual
            .ScreenUpdating = False
        End With
        '-------------------------------Filtre de ma feuille "fichier stock" en focntion du code gestion---------------------
     
        With Sheets("Fichier stock")
            .AutoFilterMode = False
            .Rows(1).AutoFilter Field:=4, Criteria1:=Array( _
                "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
                :=xlFilterValues
     
            DerLigSource = .Range("B" & Rows.Count).End(xlUp).Row
     
            For LigSource = 5 To DerLigSource
                If .Rows(LigSource).Hidden = False Then
                    Code = .Range("B" & LigSource)
                    'Recherche où se trouve le code
                    Set Recherche = CurBook.Sheets("J+5").Columns("B").Find(Code, LookIn:=xlValues, LookAt:=xlWhole)
                    If Not Recherche Is Nothing Then
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 24) = .Cells(LigSource, 34)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 25) = .Cells(LigSource, 37)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 26) = .Cells(LigSource, 40)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 27) = .Cells(LigSource, 43)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 28) = .Cells(LigSource, 46)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 29) = .Cells(LigSource, 49)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 30) = .Cells(LigSource, 52)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 31) = .Cells(LigSource, 55)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 32) = .Cells(LigSource, 58)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 33) = .Cells(LigSource, 61)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 34) = .Cells(LigSource, 64)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 35) = .Cells(LigSource, 67)
                        CurBook.Sheets("J+5").Cells(Recherche.Row, 36) = .Cells(LigSource, 8)
                    End If
                End If
            Next
        End With
     
        CurBook.Activate
     
        With Application
            .Calculation = xlManual
            .ScreenUpdating = True
        End With
     Set CurBook = Nothing
     
    End Sub
    Tu remarquera que j'importe le tableau fichier stock dans une feuille avant de l'utiliser c'est beaucoup plus simple" et ou éffectivement j'étais pas loin! Merci ca m'a vachement aidé

    Par contre j'aurais une derniere question dans ma feuille "J+5" je voudrais importer en colonne (AK) toujours en fonction de mon critéres (code article) les colonne les colonne (I+J) c'est a dire en les aditionnant et les positionner en fonction de ce code article on pourrais dire une recherchev+somme Prod je te joint le code que j'ai commmencer en ésperant que tu me comprennent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
     
    Sub calcul()
     
     
    Dim NbLg As Long, NbLg2 As Long
     
    Application.ScreenUpdating = False
    NbLg = Sheets("Fichier stock").Range("B" & Rows.Count).End(xlUp).Row
    NbLg2 = Sheets("J+5").Range("B" & Rows.Count).End(xlUp).Row
     
     
        With Sheets("J+5").Range("AK5:AK" & NbLg2)
          .ClearContents
          .Formula = "=SUMPRODUCT((Fichier stock!$B$5:$B$" & NbLg & "=$B5)*(Fichier stock!$I$2:$J$" & NbLg & "))"
          .Value = .Value
        End With
     
    End Sub
    Merci encore Parmi

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Si tu veux additionner les valeurs de I et J, aussi bien le faire dans la première macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurBook.Sheets("J+5").Cells(Recherche.Row, 37) = .Cells(LigSource, 9) + .Cells(LigSource, 10)

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Ou si possible l'integré directement dans la macro précedente si c'est possible je vais regarder et te faire un retour si jamais j'y arrive !

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Juste ajouter la ligne que je t'ai mise sous la liste

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 29
    Par défaut
    Alors je penser pas que ca serait si simple je me compliquer un peut la vie heureusement que tu m'a repondu parce que la je me lancé dans un truc pas possible encore merci t'assure!!!

    faut il que je mettent que ça été résolu quelque part ou pas a savoir si j'ai d'autre problemes je chercherais sur le forum et au pire des cas créer une nouvelle discussion???

    Enfin en tout cas merci Parmi I m happy!!!

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Marque comme résolu.
    Ouvre un nouveau message si tu as d'autres questionnements...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importation de données avec conditions
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 24/08/2007, 09h40
  2. [VBA-E]{débutant} Importation de données avec menu déroulant
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/04/2007, 18h02
  3. [RegEx] Rechercher n'importe quel nombre, avec exceptions
    Par alex.hitman dans le forum Langage
    Réponses: 6
    Dernier message: 27/03/2006, 21h23
  4. import de données avec BCP
    Par doudou10000 dans le forum Outils
    Réponses: 2
    Dernier message: 09/12/2005, 17h10
  5. [DTS] Import de données avec des doublons
    Par Hotchotte dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo