Mise à jour valeur
Bonjour a tous!!!
voila je souhaite avoir un coup de main sur une formule ou une macro sur un sujet assez difficile (pour moi)
je m'explique :
j'ai un fichier excel (jusque ici normal) avec deux feuilles
dans la première mon "suivi" avec x colonnes et x lignes (env 4000)
dans le deuxième un extract "source" d'une base de donnée avec x colonnes et x lignes (env 4000) (mise a jour de cette base 1 fois /semaine)
je souhaite :
- Dans mon suivi ne garder que certaine colonnes de la feuille "source".
- Dans mon suivi a chaque ligne je peux avoir des commentaires (info importante) liée en référence a la première colonne.
- Dans mon "source" il peux y avoir des lignes en plus a chaque fois donc je souhaite qu'elle s'ajoute dans le suivi
dans la feuille "source" la colonne avec le titre A est commune avec le suivi
dans le suivi il faut faire une mise a jour avec les autres colonnes de la "source" mais faire attention en cas de r'ajout de ligne dans la base "source"
je sais pas si je m'explique bien
merci pour vos retour...
Bonjour et bienvenue sur le forum
PEPITO59 a écrit :je sais pas si je m'explique bien
Pas assez bien pour moi, en tous cas.
Mais s'il y avait des données dans tes tableaux, cela aiderait peut-être...
Bye !
Bonjour
...mais faire attention en cas de r'ajout de ligne dans la base "source"
C'est à dire, faire attention à quoi ?
Sinon code ci-dessous à essayer en lui associant un bouton placé sur la feuille Suivi ou source
Sub Maj()
Dim dlg As Integer, i As Integer
dlg = Sheets("suivi").Range("A" & Sheets("suivi").Rows.Count).End(xlUp).Row
For i = 10 To Sheets("source").Range("A" & Sheets("source").Rows.Count).End(xlUp).Row
With Sheets("suivi")
.Range("A" & dlg + 1) = Sheets("source").Range("A" & i)
.Range("B" & dlg + 1) = Sheets("source").Range("F" & i)
.Range("C" & dlg + 1) = Sheets("source").Range("I" & i)
.Range("E" & dlg + 1) = Sheets("source").Range("J" & i)
.Range("F" & dlg + 1) = Sheets("source").Range("N" & i)
.Range("G" & dlg + 1) = Sheets("source").Range("O" & i)
.Range("I" & dlg + 1) = Sheets("source").Range("AI" & i)
.Range("J" & dlg + 1) = Sheets("source").Range("AY" & i)
.Range("K" & dlg + 1) = Sheets("source").Range("DQ" & i)
.Range("R" & dlg + 1) = Sheets("source").Range("DR" & i)
.Range("S" & dlg + 1) = Sheets("source").Range("DS" & i)
End With
Next
End SubSi ok, veillez à cloturer le fil lors de votre réponse en cliquant sur le V vert à coté du bouton EDITER
Cordialement
merci ça avance ci joint le fichier avec des valeurs
le truc important c'est que la feuille "source" change 1 fois par semaine et des lignes avec un numéros de dossier peuvent être créer il faut que dans le suivi cela ne décale pas les information en vert car il sont liée au numéro de maison
Re
Si vous reprenez votre premier fichier posté et le code proposé, cela ne modifie pas les commentaires
Votre deuxième fichier ne correspond en rien au premier. Donc le code doit être refait complètement.
le truc important c'est que la feuille "source" change 1 fois par semaine et des lignes avec un numéros de dossier peuvent être créer
?? Si la feuille source change, on ajoute les lignes de la feuille source dans la feuille suivi. C'est pas ce que vous voulez ??
Dan a écrit :Re
Si vous reprenez votre premier fichier posté et le code proposé, cela ne modifie pas les commentaires
Votre deuxième fichier ne correspond en rien au premier. Donc le code doit être refait complètement.
le truc important c'est que la feuille "source" change 1 fois par semaine et des lignes avec un numéros de dossier peuvent être créer
?? Si la feuille source change, on ajoute les lignes de la feuille source dans la feuille suivi. C'est pas ce que vous voulez ??
oui et non
oui : des nouvelles lignes peuvent être créer entre deux autres ligne existante sur le fichier suivi / source
non : car les infos des lignes déjà existante sur le fichier suivi peuvent être modifier suivant le fichier source "mise a jour"
merci
Re
Quel est le bon fichier ? le premier ou le deuxième ??? Comme déjà dit avant les fichiers ne sont pas identiques
Coté dossier, vous ne voulez avoir qu'un seul dossier dans la feuille suivi en colonne A, ce qui implique que le code doit remettre éventuellement à jour sur base de la feuille source si ce dossier existe déjà en feuille suivi. Correct ??
Dan a écrit :Re
Quel est le bon fichier ? le premier ou le deuxième ??? Comme déjà dit avant les fichiers ne sont pas identiques
Coté dossier, vous ne voulez avoir qu'un seul dossier dans la feuille suivi en colonne A, ce qui implique que le code doit remettre éventuellement à jour sur base de la feuille source si ce dossier existe déjà en feuille suivi. Correct ??
C'est le 2ème qui es bon
En faite la source me donne tout les numéros de dossier au jour le jour si la base change (ligne suplementaire) il faut que dans suivi elle viennent ce rajouter en décalant toutes les lignes car dans suivi je rajoute des info qui correspond à chaque numéros de dossier.
Merci
re
En faite la source me donne tout les numéros de dossier au jour le jour si la base change (ligne suplementaire) il faut que dans suivi elle viennent ce rajouter en décalant toutes les lignes car dans suivi je rajoute des info qui correspond à chaque numéros de dossier.
C'est uniquement la ligne supplémentaire qui est à rajouter ou toutes lignes qui sont dans Source ?
Quand vous parlez de "décaler toutes les lignes", vous voulez dire quoi exactement ? Le code que je vous avait fait rajoutait les lignes source en dessous de la dernière ligne trouvée dans Suivi
Dan a écrit :re
En faite la source me donne tout les numéros de dossier au jour le jour si la base change (ligne suplementaire) il faut que dans suivi elle viennent ce rajouter en décalant toutes les lignes car dans suivi je rajoute des info qui correspond à chaque numéros de dossier.
C'est uniquement la ligne supplémentaire qui est à rajouter ou toutes lignes qui sont dans Source ?
Quand vous parlez de "décaler toutes les lignes", vous voulez dire quoi exactement ? Le code que je vous avait fait rajoutait les lignes source en dessous de la dernière ligne trouvée dans Suivi
Aujourd'hui là feuille suivi et la feuille source sont identique mise à part les commentaires dans la feuille suivi 1 fois par semaine il y a une
Mise à jour des éléments de chaque ligne dans le fichier source avec parfois des ajouts de numéros de dossier (pas forcément à la fin)
Je souhaite que les info des dossiers sur mon suivi se met à jour avec la feuille source et ajouter le dossier qui n'existe pas dans la feuille suivi.
Je sais que ça a l'air compliquer...mais jarrive pas à expliquer plus en détail. merci
Re
Je sais que ça a l'air compliquer...mais jarrive pas à expliquer plus en détail. merci
Non là les dernières explications sont claires !
Dans votre fichier, remplacer le code que je vous avais proposé par celui ci-après
Sub Maj()
'Macro Dan 26/01/17
Dim dlg As Integer, i As Integer, lig As Integer
For i = 10 To Sheets("source").Range("A" & Sheets("source").Rows.Count).End(xlUp).Row
dlg = Sheets("suivi").Range("A" & Sheets("suivi").Rows.Count).End(xlUp).Row + 1
With Sheets("suivi")
On Error Resume Next
lig = .Range("A:A").Find(Sheets("source").Range("A" & i), LookIn:=xlValues, LookAt:=xlWhole).Row
If lig > 0 Then dlg = lig
.Range("A" & dlg) = Sheets("source").Range("A" & i) 'dossier
.Range("B" & dlg) = Sheets("source").Range("B" & i) 'Id 1
.Range("C" & dlg) = Sheets("source").Range("C" & i) 'Etat 1
.Range("E" & dlg) = Sheets("source").Range("D" & i) 'date1
.Range("F" & dlg) = Sheets("source").Range("E" & i) 'Id2
.Range("G" & dlg) = Sheets("source").Range("F" & i) 'Etat2
.Range("I" & dlg) = Sheets("source").Range("G" & i) 'Etat site
.Range("J" & dlg) = Sheets("source").Range("H" & i) 'NB p
.Range("K" & dlg) = Sheets("source").Range("I" & i) 'Id3
.Range("R" & dlg) = Sheets("source").Range("J" & i) 'date id 3
.Range("S" & dlg) = Sheets("source").Range("K" & i) 'date effective
End With
lig = 0
Next
End SubSi ok, veillez à cloturer le fil lors de votre réponse en cliquant sur le V vert à coté du bouton EDITER (Pour réouvir le fil cliquez sur la case à cocher devenue rouge par la cloture.
Cordialement
Dan a écrit :Re
Je sais que ça a l'air compliquer...mais jarrive pas à expliquer plus en détail. merci
Non là les dernières explications sont claires !
Dans votre fichier, remplacer le code que je vous avais proposé par celui ci-après
Sub Maj() 'Macro Dan 26/01/17 Dim dlg As Integer, i As Integer, lig As Integer For i = 10 To Sheets("source").Range("A" & Sheets("source").Rows.Count).End(xlUp).Row dlg = Sheets("suivi").Range("A" & Sheets("suivi").Rows.Count).End(xlUp).Row + 1 With Sheets("suivi") On Error Resume Next lig = .Range("A:A").Find(Sheets("source").Range("A" & i), LookIn:=xlValues, LookAt:=xlWhole).Row If lig > 0 Then dlg = lig .Range("A" & dlg) = Sheets("source").Range("A" & i) 'dossier .Range("B" & dlg) = Sheets("source").Range("B" & i) 'Id 1 .Range("C" & dlg) = Sheets("source").Range("C" & i) 'Etat 1 .Range("E" & dlg) = Sheets("source").Range("D" & i) 'date1 .Range("F" & dlg) = Sheets("source").Range("E" & i) 'Id2 .Range("G" & dlg) = Sheets("source").Range("F" & i) 'Etat2 .Range("I" & dlg) = Sheets("source").Range("G" & i) 'Etat site .Range("J" & dlg) = Sheets("source").Range("H" & i) 'NB p .Range("K" & dlg) = Sheets("source").Range("I" & i) 'Id3 .Range("R" & dlg) = Sheets("source").Range("J" & i) 'date id 3 .Range("S" & dlg) = Sheets("source").Range("K" & i) 'date effective End With lig = 0 Next End SubSi ok, veillez à cloturer le fil lors de votre réponse en cliquant sur le V vert à coté du bouton EDITER (Pour réouvir le fil cliquez sur la case à cocher devenue rouge par la cloture.
Cordialement
NICKEL !!!!! Ça Marche merci beaucoup je clôture le sujet !!