La mise à jour des données

Steelson a écrit :

Une première partie à réaliser toi même :

tu ouvres l'explorateur de macro (Alt + F11)

tu vas dans le module

tu verras ceci :

    Set C = master.Columns("A").Find(tmp.Cells(i, 4).Value, master.[A1].End(xlDown), xlValues, xlWhole)
    If C Is Nothing Then
        master.Cells(newL, 1).Value = tmp.Cells(i, 4).Value
        ' ajouter autres valeurs ici
        newL = newL + 1
    End If

tu remplaces' ajouter autres valeurs ici en enlevant l'apostrophe par autant de lignes que de valeurs à importer de TMP vers MASTER comme suit :

master.Cells(newL, XXXX).Value = tmp.Cells(i, YYYY).Value

avec XXXX le n° de colonne (chiffre) de MASTER (destination) et YYYY le n° de colonne où est prise l'information dans TMP

Bon courage !

Salut Steelson,

je fait ca pour les valeurs importées de TMP vers MASTER

El pour les valeurs importées de FAMILLE vers MASTER je fait la mm chose.

Merci.

Steelson a écrit :

Une première partie à réaliser toi même :

tu ouvres l'explorateur de macro (Alt + F11)

tu vas dans le module

tu verras ceci :

    Set C = master.Columns("A").Find(tmp.Cells(i, 4).Value, master.[A1].End(xlDown), xlValues, xlWhole)
    If C Is Nothing Then
        master.Cells(newL, 1).Value = tmp.Cells(i, 4).Value
        ' ajouter autres valeurs ici
        newL = newL + 1
    End If

tu remplaces' ajouter autres valeurs ici en enlevant l'apostrophe par autant de lignes que de valeurs à importer de TMP vers MASTER comme suit :

master.Cells(newL, XXXX).Value = tmp.Cells(i, YYYY).Value

avec XXXX le n° de colonne (chiffre) de MASTER (destination) et YYYY le n° de colonne où est prise l'information dans TMP

Bon courage !

C fait, mais j'ai un petit probm à savoir, pour le colonne 8 et 10 de MASTER je veux faire une mise à jour pour toute la colonne et non pas juste pour les lignes ajoutées

    Set C = master.Columns("A").Find(tmp.Cells(i, 4).Value, master.[A1].End(xlDown), xlValues, xlWhole)
    If C Is Nothing Then
        master.Cells(newL, 1).Value = tmp.Cells(i, 4).Value
        master.Cells(newL, 2).Value = tmp.Cells(i, 1).Value
        master.Cells(newL, 7).Value = tmp.Cells(i, 13).Value
        master.Cells(newL, 8).Value = tmp.Cells(i, 15).Value
        master.Cells(newL, 9).Value = tmp.Cells(i, 16).Value
        master.Cells(newL, 10).Value = tmp.Cells(i, 20).Value
        newL = newL + 1
    End If

Et pour la colonne :

3 de MASTER = la colonne 2 de FAMILLE

4 de MASTER = la colonne 3 de FAMILLE

et

La colonne 5 de MASTER = No.semainde de la colonne 7 de MASTER

La colonne 6 de MASTER = ANNEE de la colonne 7 de MASTER

SVP, comment je peut transposer ça en MACRO VBA.

Merci infiniment pour votre aide.

Youssef,

ajoute ceci avant end sub

    derL = master.[A1].End(xlDown).Row

    Range("C2").FormulaR1C1 = "=VLOOKUP(RC[-1],FAMILLE!C[-2]:C,2,0)"
    Range("D2").FormulaR1C1 = "=VLOOKUP(RC[-2],FAMILLE!C[-3]:C[-1],3,0)"
    Range("E2").FormulaR1C1 = "=ISOWEEKNUM(RC[2])"
    Range("F2").FormulaR1C1 = "=YEAR(RC[1])"
    Range("C2:F2").Select
    Selection.AutoFill Destination:=Range("C2:F" & derL)

    Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[12],12,0)"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H" & derL)

    Range("J2").FormulaR1C1 = "=VLOOKUP(RC[-9],TMP!C[-6]:C[10],17,0)"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J" & derL)

End Sub
Steelson a écrit :

Youssef,

ajoute ceci avant end sub

    derL = master.[A1].End(xlDown).Row

    Range("C2").FormulaR1C1 = "=VLOOKUP(RC[-1],FAMILLE!C[-2]:C,2,0)"
    Range("D2").FormulaR1C1 = "=VLOOKUP(RC[-2],FAMILLE!C[-3]:C[-1],3,0)"
    Range("E2").FormulaR1C1 = "=ISOWEEKNUM(RC[2])"
    Range("F2").FormulaR1C1 = "=YEAR(RC[1])"
    Range("C2:F2").Select
    Selection.AutoFill Destination:=Range("C2:F" & derL)

    Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[12],12,0)"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H" & derL)

    Range("J2").FormulaR1C1 = "=VLOOKUP(RC[-9],TMP!C[-6]:C[10],17,0)"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J" & derL)

End Sub

Bonjour, Salut à vous Steelson,

Je vous remercie infiniment pour ton attention et ton aide apportées à la première demande. Merci pour vos réponses rapides. En effet c'est cela dont j'avais besoin.

Sub MAJ()

Dim master As Worksheet
Dim tmp As Worksheet
Set master = Sheets("MASTER")
Set tmp = Sheets("TMP")

Dim Reponse As String
Dim C As Range

derL = master.[A1].End(xlDown).Row
For i = derL To 2 Step -1

    Set C = tmp.Columns("D").Find(master.Cells(i, 1).Value, tmp.[D1].End(xlDown), xlValues, xlWhole)
    If C Is Nothing Then
        master.Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If

Next

derL = tmp.[D1].End(xlDown).Row
newL = master.[A1].End(xlDown).Row
For i = 2 To derL

    Set C = master.Columns("A").Find(tmp.Cells(i, 4).Value, master.[A1].End(xlDown), xlValues, xlWhole)
    If C Is Nothing Then
        master.Cells(newL, 1).Value = tmp.Cells(i, 4).Value
        master.Cells(newL, 2).Value = tmp.Cells(i, 1).Value
        master.Cells(newL, 7).Value = tmp.Cells(i, 13).Value
        master.Cells(newL, 8).Value = tmp.Cells(i, 15).Value
        master.Cells(newL, 9).Value = tmp.Cells(i, 16).Value
        master.Cells(newL, 10).Value = tmp.Cells(i, 20).Value
        newL = newL + 1
    End If

Next

    derL = master.[A1].End(xlDown).Row

    Range("C2").FormulaR1C1 = "=VLOOKUP(RC[-1],FAMILLE!C[-2]:C,2,0)"
    Range("D2").FormulaR1C1 = "=VLOOKUP(RC[-2],FAMILLE!C[-3]:C[-1],3,0)"
    Range("E2").FormulaR1C1 = "=ISOWEEKNUM(RC[2])"
    Range("F2").FormulaR1C1 = "=YEAR(RC[1])"
    Range("C2:F2").Select
    Selection.AutoFill Destination:=Range("C2:F" & derL)

    Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[12],12,0)"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H" & derL)

    Range("J2").FormulaR1C1 = "=VLOOKUP(RC[-9],TMP!C[-6]:C[10],17,0)"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J" & derL)

End Sub

Sincères salutations/Cordialement

Juste un petit probleme, lorsque j'importe une nouvelle base donnée sur TMP, ce code ne fonctionne plus !!

    Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[12],12,0)"
    Range("H2").Select
    Selection.AutoFill Destination:=Range("H2:H" & derL)

    Range("J2").FormulaR1C1 = "=VLOOKUP(RC[-9],TMP!C[-6]:C[10],17,0)"
    Range("J2").Select
    Selection.AutoFill Destination:=Range("J2:J" & derL)

Merci.

Les colonnes sont identiques ?

Steelson a écrit :

Les colonnes sont identiques ?

Oui sont identiques

Envoie le fichier, après copie des nouvelles données

Je regarderai à mon retour mardi

Steelson a écrit :

Envoie le fichier, après copie des nouvelles données

Je regarderai à mon retour mardi

Je met à votre disposition le fichier, avec copie des nouvelles données.

Juste, j'ai modifié ça :

Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[12],12,0)"

Range("H2").Select

Selection.AutoFill Destination:=Range("H2:H" & derL)

Par ça :

Range("H2").FormulaR1C1 = "=VLOOKUP(RC[-7],TMP!C[-4]:C[7],12,0)"

Range("H2").Select

Selection.AutoFill Destination:=Range("H2:H" & derL)

Merci pour votre aide.

9master-vf.xlsm (396.23 Ko)
Steelson a écrit :

Envoie le fichier, après copie des nouvelles données

Je regarderai à mon retour mardi

J'ai constaté d'où vient le problème. Chaque fois je copie les nouvelles données, je dois convertir la 4ème colonne "D" de TMP en format "nombre". Y'a po une possibilité d'amélioration. Merci encore 1000 fois pour votre aide.

Codialement.

Rechercher des sujets similaires à "mise jour donnees"