Microsoft 365 Synchroniser des colonnes de tableau Excel sur 2 feuilles différentes

Léraud Florian

XLDnaute Junior
Bonjour à tous,

Je vous explique mon petit soucis. J'ai un fichier Excel qui me fais office de bon de commande (feuille 1) et qui comporte un tableau avec plusieurs données (Référence produit, Quantité, Epaisseur....).
Sur une deuxième feuille Excel, je voudrai synchroniser certaines données du tableau de la feuille 1 avec un tableau de ma feuille 2 (mais pas toutes les données de la feuille 1 ne sont nécessaire). Cependant, la taille de mon tableau de la feuille 1 peut être variable et donc celui de la feuille 2 doit l'être aussi. Il n'est PAS nécessaire que la synchronisation se fasse dans le sens inverse.

J'ai essayé l'utilisation de macro mais ça n'a rien donné.

Je vous met en PJ le bon de commande auquel je veux extraire certaines informations (qui sont marquées en vert) et le tableau de commande qui me servira de tableau récapitulatif de tout les bons de commandes.

Je m'excuse de cette formulation hasardeuse :)

Merci d'avance
 

Pièces jointes

  • Bon de commande modele.xlsx
    31.2 KB · Affichages: 5
  • Tableau des Commandes 1.xlsx
    14.2 KB · Affichages: 6
Solution
à chaque sauvegarde, on peut effacer le Bon de commande pour en faire un autre
VB:
Sub SaveBonDeCommande()
Dim TabCommande() As Variant

With Sheets("Facture de service") 'dans la feuille Facture
    TabCommande = .ListObjects(1).DataBodyRange.Value 'on récupère les données dans un tablo vba
    Client = .Range("C10") 'on récupère l'ID client
    'on peut faire quelques tests avant de continuer; comme vérifier qu'un ID client a bien été saisi
    If Client = "" Then
        MsgBox ("Veuillez saisir un ID Client")
        Exit Sub 'on quitte la macro pour bypasser ce qui suit
    End If
End With
With Sheets("2022") 'dans la feuille 2022
    For i = LBound(TabCommande, 1) To UBound(TabCommande, 1) 'pour chaque ligne de commande...

TooFatBoy

XLDnaute Barbatruc
si le tableau comporte 7 lignes et que seule la première est remplie, ça écrit quand même 7 lignes dans le tableau de récap...
Je ne sais pas si tu veux absolument conserver ces 7 lignes vides, ou si une seule ligne vide suffit, mais je te propose quand même une version avec une seule ligne vide.
Après, tu prends ou tu prends pas. C'est vous qui voyez ! 😁

Dans ta macro, je te propose de remplacer
VB:
            .ListObjects(1).DataBodyRange.ClearContents
par
VB:
            ' Suppression de toutes les lignes de données du tableau "Table_Items" s'il n'est pas vide
            With Range("Table_Items")
                If Not .ListObject.DataBodyRange Is Nothing Then .Delete
            End With
 

Léraud Florian

XLDnaute Junior
Je ne sais pas si tu veux absolument conserver ces 7 lignes vides, ou si une seule ligne vide suffit, mais je te propose quand même une version avec une seule ligne vide.
Après, tu prends ou tu prends pas. C'est vous qui voyez ! 😁

Dans ta macro, je te propose de remplacer
VB:
            .ListObjects(1).DataBodyRange.ClearContents
par
VB:
            ' Suppression de toutes les lignes de données du tableau "Table_Items" s'il n'est pas vide
            With Range("Table_Items")
                If Not .ListObject.DataBodyRange Is Nothing Then .Delete
            End With

Super, merci, oui c'est nettement mieux de réduire le tableau à une seule ligne quand il est réinitialisé ^^

Merci beaucoup pour ton aide précieuse =)
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa