Transfert des données d'une feuille Excel à une autre selon conditions

18exempleeee.zip (216.66 Ko)

Bonjour,

J'aimerais pouvoir appliquer un code VBA pour transférer des données de la feuille1 vers la feuille2 seulement si la colonne "État" contient la valeur "OK"

- Par exemple :

Les lignes 5 et 7 et 8 de mon tableau contiennent la Valeur "OK" dans la colonne "État" dans la feuille1

Résultat ==> Transférer de A5 à J5 et de L5 à Q5 (feuille1) >> vers >> (Feuille2) la dernière ligne vide de la colonne A à J et de M à R (Faire de même avec les lignes 7 et 8 de la feuille1)

Ci-joint un modèle sur quoi je veux appliquer le code VBA

Je vous remercie d'avance.

Bonjour,

  1. pas de soucis avec un filtre avancé, mais je ne trouve pas "Service de Livraison" en Feuil1.
  2. par ailleurs TEL s'écrit Téléphone en Feuil1

moyennant ces 2 corrections, on peut faire :

Sub filtrer()
    Range("A4").CurrentRegion.Offset(1, 0).Clear
    Sheets("Feuil1").Range("A3").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4").CurrentRegion.Resize(1), Unique:=False
End Sub
15exempleeee.zip (191.90 Ko)

A noter que tu as un tas de colonnes inutiles à supprimer, sinon ton fichier sera ralenti. Et c'est ce qu'il fait qu'il est déjà très lourd avec peu de données.

Bonjour, merci de votre réponse rapide,

- A propos du "Service de Livraison" c'est justement le but, je dois décaler les données de la colonne L à Q ( Feuil1) vers les colonnes M à R (Feuil2) pour garder "Service de Livraison" uniquement dans la feuil2 Colonne L, est-ce possible d'appliquer ce décalage des colonnes lors du transfert des données de Feuil1 à Feuil2 ?

- "par ailleurs TEL s'écrit Téléphone en Feuil1" ==> Merci pour la remarque, je n'est pas fais attention à ça.

- Malheureusement j'ai besoin de toutes les colonnes pour la suite de mon travail, statistiques et gestion de stock, etc...(Y a t'il d'autres solutions pour alléger mon fichier sans me passer des colonnes)

N.B : Il est important pour moi de ne pas transférer la colonne "État" de la feuille1 vers la feuille2, cette dernière doit rester vide pour appliquer une autre liste qui n'a rien avoir avec la liste de la feuille1 (OK,NON,Transféré).

Je vous remercie infiniment pour votre aide précieux, et je suis toujours ouvert à toute suggestion de votre part vu que je suis très débutant en Excel et encore pire en VBA.

Dans ce cas, je double le filtre pour la partie gauche du tableau A à J et la partie droite M à R

Sub filtrer()
    Range("A4").CurrentRegion.Offset(1, 0).ClearContents
    Sheets("Feuil1").Range("A3").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4:J4"), Unique:=False
    Sheets("Feuil1").Range("A3").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("M4:R4"), Unique:=False
End Sub
14exempleeee-v2.zip (196.21 Ko)

Oui merci infiniment, c'est exactement le résultat espéré, il y a juste 2 détails que je m'excuse d'avoir oublier de les mentionner :

1- Juste après que la ligne sera transférée le statut "OK" doit changer automatiquement et devenir "Transféré" (On parle là juste de la feuille1 bien-sur)

2- les lignes transférées doivent restées en permanence dans la feuil2 et pas les remplacer par d'autres lignes mais en rajouter en cas de nouvelles données transférables.

- Une petite description de mon travail :

Le fichier EXCEL final sera partagé avec 2 personnes en ligne (Co-Edition), l'une s'occupe de la feuil1 (Pour traiter avec le client sa commande par téléphone) et l'autre s'occupe de la feuil2 (Préparation et expédition de la commande déjà traitée dans la feuil1).

L'idée est de transférer les commandes traitées avec le client par téléphone de la feuil1 à la feuil2 pour pouvoir l'expédier, une fois la commande est confirmée on choisi "OK" dans la colonne "État" et puis depuis la feuil2 on exécute le code VBA pour appliquer le transfert, une fois la commande est transférée le statut "OK" doit changer automatiquement et devenir "Transféré" (On parle là juste de la feuil1) et bien-sur je dois garder les données transférées dans la feuil2 en permanence pour mes statistiques pour la suite du travail.

Vu, il faut que je reprenne sous une autre forme, le filtre avancé seul n'est plus pertinent (je vais le conserver comme passerelle entre les 2 feuilles)

A suivre (cet apm)

Bien entendu, merci beaucoup

Si j'ai bien compris ...

Option Explicit
Sub transferer()
Dim f1 As Worksheet, f2 As Worksheet, data, extrait, i, j, n, debut
    Set f1 = Sheets("Feuil1")
    Set f2 = Sheets("Feuil2")
    debut = 3
    data = f1.Range("A" & debut).CurrentRegion.Value
    n = 0
    ReDim extrait(1 To UBound(data, 2) + 1, 1 To 1)
    For i = 2 To UBound(data)
        If data(i, 11) = "OK" Then
            f1.Range("K" & debut + i - 1) = "Transféré"
            n = n + 1
            ReDim Preserve extrait(1 To UBound(data, 2) + 1, 1 To n)
            For j = 1 To 10
                extrait(j, n) = data(i, j)
            Next
            For j = 12 To UBound(data, 2)
                extrait(j + 1, n) = data(i, j)
            Next
        End If
    Next
    f2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(extrait, 2), UBound(extrait)) = Application.Transpose(extrait)
End Sub
16exempleeee.zip (225.07 Ko)

C'est parfait, je vous remercie infiniment, C'est exactement ce que je cherche, vous m'avez beaucoup aider à avancer dans mon projet.

Rechercher des sujets similaires à "transfert donnees feuille conditions"