XL 2019 Besoin d'aide pour créer une macro vba - mettre à jour une feuille excel à partir d'une autre

saunier

XLDnaute Nouveau
Bonjour,
je suis débutante en VBA et j'aimerai de l'aide pour créer une macro.

Dans une classeur excel , j'ai une feuille de suivi d'activité. Et j'ai une seconde feuille qui est mise à jour tous les matins à partir d'une extraction de notre wms.
Cette extraction contient l'ensemble des opérations en cours pour l'une de nos activités.
1/ Partie 1 de la macro :
Je voudrais copier coller les nouvelles opérations qui apparaissent dans cette extraction pour les insérer dans la feuille "suivi". Il faudra donc comparer les deux feuilles et si une opération n'est pas contenue dans le feuille suivi , insérer une ligne et copier / coller les valeurs.
NB : la colonne K de la feuille suivi est remplie manuellement
2/ Partie 2 de la macro :
Si l'opération est déjà contenue dans le feuille suivi : mettre à jour les données à partir de la feuille extraction

je vous joint un fichier exemple en espérant être claire

merci par avance de vos aides
 

Pièces jointes

  • fichier exemple.xlsx
    12.7 KB · Affichages: 10

saunier

XLDnaute Nouveau
Bonjour,

Tout d'abord merci de ta réponse rapide.
J'ai copié la macro et ça marche parfaitement quand il s'agit de copier / coller les valeurs de la feuille extraction vers le suivi.

Par contre, lorsque le statut d'une ligne change d'en attente vers validé par exemple cela ne fonctionne pas.

As tu une idée ? Sachant que les colonnes susceptibles de changer sont :
Statut opération & Date fin OPS

merci !
 

vgendron

XLDnaute Barbatruc
ha bah oui.. evidemment.. j'ai oublié de coller le tableau mis à jour dans la feuille de suvi..
VB:
Sub update()
Dim TabSuivi() As Variant
Dim TabExtract() As Variant

With Sheets("Suivi")
    fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne non vide de la colonne A
    TabSuivi = .Range("A2:J" & fin).Value 'on met dans un tablo
End With

With Sheets("extraction")
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    TabExtract = .Range("A2:J" & fin).Value
End With

For i = LBound(TabExtract, 1) To UBound(TabExtract, 1) 'pour chaque ligne du tablo
    DéjàListé = False
    For j = LBound(TabSuivi, 1) To UBound(TabSuivi, 1) 'on cherche si le code existe déjà
        If TabSuivi(j, 2) = TabExtract(i, 2) Then
            DéjàListé = True
            'on met à jour la ligne
            For col = LBound(TabSuivi, 2) To UBound(TabSuivi, 2)
                TabSuivi(j, col) = TabExtract(i, col)
            Next col
            
            Exit For
        End If
    Next j
    If Not (DéjàListé) Then
        'il faut ajouter une ligne
        With Sheets("Suivi")
            fin = .Range("A" & .Rows.Count).End(xlUp).Row
            For col = LBound(TabSuivi, 2) To UBound(TabSuivi, 2)
                .Cells(fin + 1, col) = TabExtract(i, col)
            Next col
        End With
    End If
Next i

With Sheets("Suivi")
    .Range("A2").Resize(UBound(TabSuivi, 1), UBound(TabSuivi, 2)) = TabSuivi
End With

End Sub
 

saunier

XLDnaute Nouveau
Bonjour, alors voici où j'en suis. La ma cro proposée fonctionne sans soucis. Mais il subsiste un problème, lors de la mise à jour, le format de certaines date se corrompt.

Par exemple j'ai à l'origine une date : 12/01/22 , et dans ma feuille de suivi mise à jour par la macro cela devient 01/12/2020

Aurais tu une idée ?
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof