Macro extraire données suivant critaire

Bonjour,

j'aurai besoin d'aide pour créer une macro parce que je n'y connais rien.

BESOIN:

CRÉER UNE MACRO QUI RÉCUPÉRE DANS LA FEUILLE "IMPORT DONNÉES" LES COLONNES SUIVANTES: AFFAIRE, EXPÉDITION, CONFIRME pour les coller dans bilan

MAIS JE VEUX QUE LA MACRO NE COLLE QUE LES QUE LES DONNÉES DE LA COLONNE "CONFIRMÉE" ET DES COLONNES ASSOCIES CITES Précédemment SELON DES DATES recherche

EX: RECHERCHE DU 21 MARS AU 18 AVRIL DES EXPÉDITIONS ET DES COLONNES AFFAIRE ET CONFIRMÉE ASSOCIE

merci de bien vouloir m'aider.

J'ai fais des recherche mais je n'arrive pas a faire l'extraction selon des dates de recherche

Bonjour,

Une proposition avec un filtre avancé

A+

Bonjour frangy,

merci beaucoup pour ton aide. En effet ça fonctionne très bien.

Si ça ne te dérange pas trop et ce que tu pourrais m'expliquer comment fonctionne ce filtre avancé? J'aimerai comprendre un peu pour pouvoir apprendre. Je m'y connais que très peu en VBA.

merci a toi

Re-bonjour,

L'intérêt premier, c'est qu'il n'est pas nécessaire d'utiliser VBA.

Le filtre avancé est une fonctionnalité d'Excel (voir Données > Trier et Filtrer > Avancé).

L'autre intérêt, comparativement au filtre automatique, c'est qu'il permet d'afficher les résultats à un autre emplacement, ce qui correspond bien à ta demande.

Après, c'est de la cuisine. Il suffit de définir la plage de données, la plage de critères et l'emplacement des résultats.

Dans l'exemple que je t'ai adressé, j'ai placé une macro qui ne fait que reproduire ce que tu peux faire directement avec Excel.

D'ailleurs, tu peux constater que cette macro est très light.

A+

Bonsoir,

j'ai un petit problème avec la macro.

J'ai rajouté 2 colonnes à ma feuille de données et j'ai essayé de modifier la macro mais j'ai toujours un message d'erreur.

De plus, lorsque dans la colonne expédition il y a des dates identique comme j'ai surligné en rouge dans le table de données, j'ai n'ai qu'une seule date qui apparait. Or il est possible d'avoir des numéros d'affaires différents pour une même date d’expédition.

Si quelqu'un peut jeter un coup d’œil et me montrer comment faire, ça serait vraiment super.

Bonne soirée

20test.xlsm (39.66 Ko)

J'ai rajouté 2 colonnes à ma feuille de données et j'ai essayé de modifier la macro mais j'ai toujours un message d'erreur.

Pour déterminer la plage de données, on sait que la ligne 1 est la ligne de début (il faut conserver la ligne d'en-tête).

La ligne de fin est obtenue avec l'instruction :

Range("G" & Rows.Count).End(xlUp).Row)

qui se traduit par : ligne de la première cellule renseignée lorsqu'on remonte la colonne G.

Or, du fait de l'ajout de 2 colonnes la colonne à prendre en compte n'est plus G mais I.

La plage de données est obtenue avec l'instruction

Range("A1:BI" & .Range(" I" & Rows.Count).End(xlUp).Row)

De plus, lorsque dans la colonne expédition il y a des dates identique comme j'ai surligné en rouge dans le table de données, j'ai n'ai qu'une seule date qui apparait. Or il est possible d'avoir des numéros d'affaires différents pour une même date d’expédition.

Non, tu as bien les deux dates dans la plage résultats, à condition que la date "Confirmée" soit renseignée puisque c'est un critère du filtre.

A+

22test-bis.xlsm (40.45 Ko)

Bonjour,

merci pour ton explication.

J'aurai deux autre petites questions si ça ne te dérange pas trop:

1/ dans le fichier "10" j'ai un certain nombre de données et quand je les copies et les colles dans "DONNEES TOLTECH" et que je lance la macro ça bloque et je ne comprends par pourquoi. Et-ce que tu pourrais m’éclairer?

2/ si on considère la colonne A=client, B=nom client... si je souhaite extraire 3 colonnes comme "A,C,F" par exemple, comment s’écrira la macro d'une façon général? et pour les critères?

Désolé si je pose toutes ces questions mais c'est important pour moi de pouvoir tout comprendre.

merci encore

9test-2-0.xlsm (39.46 Ko)
710.xlsx (41.92 Ko)

1/ dans le fichier "10" j'ai un certain nombre de données et quand je les copies et les colles dans "DONNEES TOLTECH" et que je lance la macro ça bloque et je ne comprends par pourquoi. Et-ce que tu pourrais m’éclairer?

L'orthographe des en-têtes de colonne de la plage de données et de la plage de résultat doivent être strictement identiques.

Dans ton exemple, ce n'est pas le cas pour la colonne de confirmation orthographiée "Confirmée ?" dans la plage de données et "Confirmé" dans la plage de résultat .

2/ si on considère la colonne A=client, B=nom client... si je souhaite extraire 3 colonnes comme "A,C,F" par exemple, comment s’écrira la macro d'une façon général ? et pour les critères ?

Ta base de données couvre les colonnes A à BK.

La plage des en-têtes de résultat doit porter les en-têtes recherchées : Client, Nom client et Création.

La zone de critères doit être adaptée à la recherche souhaitée.

Dans le code, seule la définition des plages est éventuellement amenée à évoluer selon le choix des résultats ou des critères.

A+

16test-2-0.xlsm (56.91 Ko)

Bonjour,

merci beau coup ton explication.

je voudrais savoir s'il est possible de faire un calcul automatique, tel que: e7=d7-c7; e8=d8-c8 … et ceux jusqu’à une cellule vide?

Oui, oui, c'est possible !

A+

41test-ter.xlsm (41.38 Ko)

J'ai toujours un problème avec le calcul de l'ecart. si je fais une recherche du 01/03 au 30/03 puis du 01/03 au 15/03 les anciens ecarts restent affiché. Je ne comprends pas pourquoi.

Le test sur le fichier que je t'ai envoyé montre que le calcul se fait correctement.

Je ne peux pas deviner ce qui diffère sur ton fichier.

A+

Edit : je crois avoir compris le problème.

Essaie avec ce code

Sub Filtrer()
Dim MaPlage As Range
Dim DerLig As Long
    Application.ScreenUpdating = False
    Range("E7", Range("E7").End(xlDown)).Clear
    With Worksheets("DONNEES TOLTECH")
        Set MaPlage = .Range("A1:BI" & .Range("I" & Rows.Count).End(xlUp).Row)
        MaPlage.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("D3:F4"), _
        CopyToRange:=Range("B6:D6"), Unique:=False
    End With
    DerLig = Range("B6").End(xlDown).Row
    If DerLig < Rows.Count Then
        Range("E7").Formula = "=D7-C7"
        Range("E7").AutoFill Destination:=Range("E7:E" & DerLig), Type:=xlFillDefault
        Range("E7:E" & DerLig) = Range("E7:E" & DerLig).Value
    End If
End Sub

A+

MERCI CETTE FOIS SI CA MARCHE CORRECTEMENT.

Désolé de t’embêter mais j'aimerai de poser une dernière question.

je souhaite convertir la formule: SI(C7<=D7;NB.JOURS.OUVRES(C7;D7)-1;-1*(NB.JOURS.OUVRES(D7;C7)-1)) pour la remplacer dans la macro où il y avait "d7-c7"

Merci a toi si tu peux m'aider

A tester.

A+

16test-macro.xlsm (44.41 Ko)
Rechercher des sujets similaires à "macro extraire donnees suivant critaire"