Filtre/copier les données (aide sur Macro)

Haytoch

XLDnaute Junior
Bonjour le forum,

je reviens vers vous pour l'aide sur une petit macro que j'ai crée avec l'enregistrement , puis j'essai a l'adapter pour tous les lignes mais je n’arrive pas a obtenir la bonne résultat , aussi pour quelque modification que je peux pas faire avec mon niveau sur VBA (débutant).
j'ai mis les explication dans le fichier attacher.

1-L'indice qu'il faut obtenir pour chaque produit (Colonne A) il faut qu'il soit inférieur ou égale au (=<) Traitemant d'analyse d'un produit ==> Cellue Colonne E et F,

2- Si le filtre avec le TR d'analyse n'existe pas , la macro refait le fitre avec TR d'analyse -1 (TR A -1) si TR A -1 n'existe TR A-2 jusqu'au TR existé inférieur et proche au TR d'Analyse,

3- Les indices généré actuellemnt par la macro sont incorect , quand je fait la comparaison manuellement je trouve l'ecart je ne sais pas qu'il due a quoi !!

4- feuille "BDD" est un exemplaire d'un fichier qui contien plusieurs lignes (Plus de 1260 lignes),

merci pour votre aide
 

Fichiers joints

Bebere

XLDnaute Barbatruc
Re : Filtre/copier les données (aide sur Macro)

bonjour Haytoch
bienvenue
met un exemple de ce que tu veux obtenir
Il me semble que tu pourrais avoir plusieurs lignes ou alors tu expliques mal
ce que je pense
1 recherche indice si trouvé ok
2 recherche indice-1 si trouvé ok,etc
 

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

Bonjour,
en faite je vous explique bien .
il y a un fichier "BDD" qui aimanté par les données avec plusieurs personne ils contiens plusieurs informations de chaque produit(Nom Produit,serial,Version,traitement,indices, .......) et les changements a quel il subit a chaque traitement (réception du nouvelle version de ce produit). ma tache et de chercher le dernier traitement de se produit , pour obtenir et je prend le dernier indice, dans ce cas il y a deux possibilité au cours de traitement au je suis ( TR analyse) par exemple TRXX:

1- Je vais chercher si le produit et livré ==> je prend cet indice pour l'utilisé dans le dossier du produit pour la FAB. (Donc indice trouvé au TRXX ok) (le job de la macro c fini ici) si non étape 2.

2 Si je trouve pas l'indice au TRXX , je vais aller chercher si le produit livré au TRXX-1 si oui je prend l'indice a ce traitement, si non je vais au TRXX-2 .... jusqu'au dernière TRYY trouver a condition que ce traitement soit inférieur au TR d'analyse (TRYY=<TRXX)

ci ce produit n'a été jamais livré il faut que je demande l'insertion dans la BDD.

Don comme vous dite avant :

1 recherche indice si trouvé ok ==> Copier l'indice et le TR vers le tableaux d'analyse | si ne pas trouvé aller à l'étape 2 .
2 recherche indice-1 si trouvé ok ==> Copier l'indice et le TR (TR de l'indice) | si ne trouve pas aller a l'étape 3.
2 recherche indice-2
4 ....etc (si jamais trouvé "Produit jamais livré")

merci d'avance
 

Bebere

XLDnaute Barbatruc
Re : Filtre/copier les données (aide sur Macro)

bonjour Haytoch
code qui fera peut être ton bonheur

Code:
Sub Get_index_Morpho()
    Dim tr As Integer
    Dim i As Long, J As Long, DerL As Long
    Dim Bwsh As Worksheet

    Application.ScreenUpdating = False

    Set Bwsh = Worksheets("A livré")

    For J = 2 To Bwsh.Range("A" & Rows.Count).End(xlUp).Row

        With Worksheets("BDD")
            DerL = .Range("A" & .Rows.Count).End(xlUp).Row
            .Range("A1:E" & DerL).Name = "Base"
            'critères
            .Range("J2") = Bwsh.Range("A" & J)    'produit
            .Range("K2") = Bwsh.Range("D" & J)    ' traitement
        End With
        
        Range("BDD!J10") = ""
        Range("BDD!K10") = ""
        Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[BDD!J1:K2], CopyToRange:=[BDD!J9:K9]
        If Range("BDD!J10") <> "" Then
            Bwsh.Range("E" & J) = Range("BDD!J10")
            Bwsh.Range("F" & J) = Range("BDD!K10")
        Else
            tr = Range("BDD!K2")
            For i = 1 To tr
                Range("BDD!K2") = tr - i
                Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[BDD!J1:K2], CopyToRange:=[BDD!J9:K9]
                If Range("BDD!J10") <> "" Then
                    Bwsh.Range("E" & J) = Range("BDD!J10")
                    Bwsh.Range("F" & J) = Range("BDD!K10")
                    Exit For
                End If
            Next i
            If Range("BDD!J10") = "" Then Bwsh.Range("E" & J) = "Produit jamais livré"
        End If

    Next J

    Application.ScreenUpdating = True

End Sub
 

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

bonsoir,

Merci pour ta réponse je viens de tester et sa me donne erreur (image ci joint)

un problème avec le filtre avancé
 

Fichiers joints

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

c'et corrigé maintenant il me manque la zone du "Criteria" et "Extract"

c'est bon :)

Merci bcp
 

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

est ce que c'est possible d’intégré un variable de "Sheets" la feuille d’exécution dépende de la valeur d'une cellule .
 

Bebere

XLDnaute Barbatruc
Re : Filtre/copier les données (aide sur Macro)

bonjour Haytoch
c'est possible,un exemple
dim ws as Worksheet
Set ws = Worksheets(Worksheets("BDD").Range("A1").Text)'rmq:il faut du texte
ou
dim NomFeuille as string
NomFeuille=Worksheets("BDD").Range("A1")
Set ws = Worksheets(NomFeuille)
 

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

bonjour Haytoch
c'est possible,un exemple
dim ws as Worksheet
Set ws = Worksheets(Worksheets("BDD").Range("A1").Text)'rmq:il faut du texte
ou
dim NomFeuille as string
NomFeuille=Worksheets("BDD").Range("A1")
Set ws = Worksheets(NomFeuille)
Voilà ci joint , quand je sépare les données ceci me donne des résultats incorrect.

(pour tester dans le code quande en lui donne la feuille globale BBD ca marche bien, mais en cas ou le "Sheet = valeur de la colonne H" non )

merci
 

Fichiers joints

Bebere

XLDnaute Barbatruc
Re : Filtre/copier les données (aide sur Macro)

haytoch il faut contrôler si la feuille existe
 

Haytoch

XLDnaute Junior
Re : Filtre/copier les données (aide sur Macro)

Effectivement ceci est un autre point, je sais comment le gérer :)

Mais le problème comment gérer les sheets pour obtenir les bonnes résultats
Tu peux tester avec la définition normal du worksheet et avec celle variable.
Tu peux ajouter :
On error Resume next

Merci
 

Bebere

XLDnaute Barbatruc
Re : Filtre/copier les données (aide sur Macro)

bonjour Haytoch

If solsh.Range("J10") = "" Then'tu es sur BDD,tu dois être sur la feuille ad hoc
With Bwsh
.Range("E" & J) = "None!"
.Range("F" & J) = "None !"
.Range("G" & J) = "Solution jamais livrée"
End With
End If
 

Discussions similaires


Haut Bas