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 Iftu remplaces
' ajouter autres valeurs icien 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).Valueavec 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 Iftu remplaces
' ajouter autres valeurs icien 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).Valueavec 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 IfEt 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 SubSincè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.
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.