Intégration auto nouvelles données de feuille à feuille
Bonjour,
Après avoir écumé l'océan des aides Excel disponibles sur le net (en tout cas avec mes termes de profane), je me permets de venir vous soumettre mon "problème".
En espérant qu'il n'y ait pas déjà un sujet (s'il existe je voudrais bien le lien ;) ) et que le mien est approprié.
Je vous joins une copie du fichier tronqué (pour les infos persos) mais qui contient toutes les colonnes (le nombre de ligne a été tronqué pour l'exemple).
J'ai un fichier avec 2 feuilles:
feuille 1: export base de données
feuille 2: transmission infos
Sur la feuille 1 (qui provient d'un export brut) il peut y avoir des nouveaux dossiers, soient des nouvelles lignes qui peuvent être à n'importe quel niveau.
Demande n°1: je voudrais que la feuille 1(A-I) mette à jour en auto les infos de la feuille 2 (A-I) et que les nouvelles lignes de la feuille 1 se reportent automatiquement sur la feuille 2 (à la fin des lignes existantes si c'est plus pratique).
Sachant que:
- Sur la feuille 2, une partie du contenu possède la RECHERCHEV (colonnes A à I ) et le reste (colonnes J à P) n'en possède pas.
- J'ai également mis un filtre pour pouvoir trier.
Demande n°2: je voudrais que les colonnes sans formule de la feuille 2 suivent le mouvement, c'et à dire qu'elle se décalent bien avec le bon numéro de dossier (colonne A).
Est-ce possible? Est-ce qu'il faut que j'arrête la RECHERCHEV? Y a t-il quelque chose de plus simple?
J'espère que je m'exprime comme il faut (plutôt novice sur Excel), autrement je serai ravi d'essayer de vous expliquer d'une autre façon.
Je vous remercie d'avance pour vos lumières et si vous aviez la solution miracle à intégrer à ce document je suis toute ouïe.
Au plaisir de vous lire,
UlrichO
Bonjour,
Ci-contre un test avec des numéros ajoutés aléatoirement dans votre base de donnée pour essayer :
Sub MAJ()
Dim L%, TEST$
Dim DICO As Object
L = 2
Set DICO = CreateObject("Scripting.Dictionary")
While Worksheets("Export base de données").Cells(L, 1) <> ""
If Application.WorksheetFunction.CountIf(Worksheets("TRANSMISSION INFOS").Columns(1), Worksheets("Export base de données").Cells(L, 1)) = 0 Then
DICO(Worksheets("Export base de données").Cells(L, 1)) = ""
End If
L = L + 1
Wend
With Worksheets("TRANSMISSION INFOS")
.Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).Resize(DICO.Count, 1) = Application.Transpose(DICO.keys)
.Range("B" & .Cells(.Rows.Count, 2).End(xlUp).Row & ":I" & .Cells(.Rows.Count, 1).End(xlUp).Row).FillDown
End With
End SubPar contre une question me taraude, comment comptez vous conserver les données si le numéro n'est pas dans votre fichier d'export. En effet la recherchev ne renverra rien.
Cdlt,
Bonjour,
je vous remercie pour votre réactivité !
Tout à l'air de bien fonctionner, c'est super !!
Serait-il possible du coup de m'indiquer comment je peux l'intégrer à mon fichier d'origine ? (celui en PJ étant une copie tronquée pour les raisons de confidentialité). Dois-je aller dans "macro" et "enregistrer une macro" ? (Ca serait génial de me donner un petit "pas à pas" :D ).
En ce qui concerne l'export, il contient toujours les numéros de dossier, si c'était votre question (?). De ce fait j'imagine qu'ils se mettront automatiquement à jour sur la feuille 2 + les nouveaux numéros seront intégrés également sur feuille 2 (par rapport à l'export collé sur la feuille 1)?
Et avec cette macro, je n'ai plus besoin de la rechercheV ?
A nouveau merci pour votre aide !
Bonjour,
Ci-contre la manipulation à réaliser :
Pour ce qui est des RECHERCHEV c'est selon la convenance. Je ne pense pas qu'elles soient nécessaires car votre base de donnée provient d'un import, elles ne seront modifiée que lors d'un nouvel import. Il est donc pertinent de les ajouter directement par macro puis ensuite qu'elle copie et colle en valeur le tout comme dans l'exemple ci-contre . A noter que j'ai échangé les colonnes intitulés formation et statut pour que ce soit une copie de la donnée d'import :
Sub MAJ()
Dim L%, LR%
Dim DICO As Object
L = 2
Set DICO = CreateObject("Scripting.Dictionary")
While Worksheets("Export base de données").Cells(L, 1) <> ""
If Application.WorksheetFunction.CountIf(Worksheets("TRANSMISSION INFOS").Columns(1), Worksheets("Export base de données").Cells(L, 1)) = 0 Then
DICO(Worksheets("Export base de données").Cells(L, 1)) = ""
End If
L = L + 1
Wend
If DICO.Count = 0 Then
MsgBox "Pas de valeur à mettre à jour", vbCritical
Exit Sub
Else
With Worksheets("TRANSMISSION INFOS")
.[B2].Formula = "=VLOOKUP($A2,'Export base de données'!$A:$I,COLUMN(B$2),FALSE)"
.Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1).Resize(DICO.Count, 1) = Application.Transpose(DICO.keys)
.[B2].Copy
.Range("B2:I2").PasteSpecial Paste:=xlPasteFormulas
.Range("B2:I" & .Cells(.Rows.Count, 1).End(xlUp).Row).FillDown
.Range("J2:O2").Copy
.Range("J2:O" & .Cells(.Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:=xlPasteFormats
.Range("J2:O" & .Cells(.Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:=xlPasteValidation
.[A1].CurrentRegion.Copy
.[A1].CurrentRegion.PasteSpecial Paste:=xlPasteValues
End With
End If
MsgBox "Mise à jour réalisée", vbInformation
Application.CutCopyMode = False
End SubJ'ai également ajouté une gestion d'erreur si aucune donnée n'est à mettre à jour.
Cdlt,
Bonjour,
à nouveau merci pour votre réponse.
Je rencontre un souci: lorsque je colle la totalité de mon export sur la feuille 1 (sur votre version du fichier), rien ne se répercute sur la feuille 2.
Est-ce normal?