Aide pour mise à jour automatique
Résolu
simon7339
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour à tous,
Je sollicite votre aide pour un petit conseil ou du moins pour une petite piste. En effet je ne sais pas trop comment commencer ma vba (si vba nécessaire!)
Pour résumer :
- Une personne de mon entreprise va compléter un rapport global jour après jour en ajoutant des lignes à la feuille
Ces données ont besoin d'être copié automatiquement vers une autre feuille (ce sera selon le nom du pays concerné)
Le pays concerné remplira des informations dans son onglet et il faut que ces nouvelles informations se recopie automatiquement dans le fichier source.
Avez-vous une idée pour faire cela?
Merci d'avance pour votre aide.
Je sollicite votre aide pour un petit conseil ou du moins pour une petite piste. En effet je ne sais pas trop comment commencer ma vba (si vba nécessaire!)
Pour résumer :
- Une personne de mon entreprise va compléter un rapport global jour après jour en ajoutant des lignes à la feuille
Ces données ont besoin d'être copié automatiquement vers une autre feuille (ce sera selon le nom du pays concerné)
Le pays concerné remplira des informations dans son onglet et il faut que ces nouvelles informations se recopie automatiquement dans le fichier source.
Avez-vous une idée pour faire cela?
Merci d'avance pour votre aide.
15 réponses
-
1. Serait-il possible d'actualiser ces infos sur la Feuil1?
oui, un peu comme dans le premier fichier
2. (Peut être dans ce cas obligation de créer un ID unique)
oui, ça va même être indispensable
Bonne soirée -
Bonjour
..." Ces données ont besoin d'être copié automatiquement vers une autre feuille"...
..." nouvelles informations se recopie automatiquement dans le fichier source. "...
Fichier source ou feuille source ?
Mettre le classeur (ou un extrait) sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé dans le message de réponse
Michel -
Bonjour Michel, merci pour la réponse.
http://www.cjoint.com/c/EFpowm0AGJv
Donc dans l'onglet Source, dès que la personne rajoute une ligne, je voudrais que l'onglet correspondant aux pays d'origine (Colonne F) se mette à jour avec la nouvelle ligne ajoutée.
Ensuite la personne du pays concerné (par exemple IE), renseigne des informations et ces informations sont automatiquement remise à jour dans le fichier source.
Merci d'avance -
Bonjour
Un (petit) exemple
http://www.cjoint.com/c/EFppts4zJVg
Salutations à Michel en passant
Cdlmnt -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Super merci pour l'aide.
Est-il possible de copier directement toutes les lignes avec un seul bouton sans être obligé de le faire ligne par ligne?
Pour ça je pensais créer un ID unique pour chaque ligne. Est-ce une bonne méthode? -
1. Est-il possible de copier directement toutes les lignes avec un seul bouton sans être obligé de le faire ligne par ligne?
bien sûr
question 1. est ce que les feuilles de détail sont déjà créées, si c'est non, la macro peut s'en charger
2. Pour ça je pensais créer un ID unique pour chaque ligne. Est-ce une bonne méthode?
Très bonne idée même, un simple numéro en colonne 1 peut très bien faire l'affaire
Tu dis -
http://www.cjoint.com/c/EFqqrGrnsav
Bonjour à tous,
Du coup en regardant un peu sur internet, j'ai modifié une macro utilisant l'objet Dico, c'est la première fois que je l'utilise et ça accélère grandement le code.
Alors j'ai une petite question.
Je voudrais que dans ma colonne F lorsque la macro rencontre les pays (IT, FR, DE, GB et CH) cette dernière la copie dans l'onglet IE.
Je me doute qu'il faut définir avec le dico (key et item) mais j'avoue ne pas comprendre tout à fait. Peut être ce n'est pas la bonne méthode?
Je continue à essayer, merci d'avance pour ceux qui y jetteront un coup d'oeil. -
Tu n'as pas vraiment besoin de l'objet dictionary dans la mesure où tu supprimes toutes les feuilles de détail avant de les re-créer
Un exemple dans le Module 2 (ctrl+k pour lancer la macro)
http://www.cjoint.com/c/EFqryBsG7Fg
Cdlmnt -
Ah ok effectivement ça parait plus logique comme ça. Ca marche nikel.
Merci vraiment pour ton aide c'est super sympa.
Du coup pour aller plus loin. Imaginons que les pays d'origine (IE, IN, CN et US) aient accès à ce fichier et remplisse dans l'onglet qui leur corresponde les informations de colonne P jusqu'à la colonne AB.
Serait-il possible d'actualiser ces infos sur la Feuil1? (Peut être dans ce cas obligation de créer un ID unique)
Encore merci -
http://www.cjoint.com/c/EFrm1oVbiTv
Salut à tous, en module 3 j'ai essayé d'utiliser la fonction Find et d'identifier le numéro de ligne de la Feuil1 pour ensuite copier les informations de l'onglet IE vers la feuil1.
Mais la boucle ne fonctionne plus à partir de i = 2. je ne comprends pas. Avez-vous une idée si jamais qqn à le temps de regarder.
Merci d'avance. Bonne journée à tous -
http://www.cjoint.com/c/EFrnKxNY3Gv
Voilà ce que j'ai fait, je pense que ça marche.
Si un d'entre vous pense pouvoir l'améliorer (certainement); n'hésitez pas à me dire -
1. Voilà ce que j'ai fait, je pense que ça marche.
si tu as testé et que ça donne le résultat attendu, c'est que ça marche
2. En faisant un peu de ménage essaies celle-ci
Sub Actu1() Dim DLig As Long Dim i As Long Dim f As Long Dim ID As Long Dim Trouve As Object, PlageDeRecherche As Range Set PlageDeRecherche = Sheets("Feuil1").Columns(1) For f = 2 To Worksheets.Count With Sheets(f) DLig = .Range("A" & Rows.Count).End(xlUp).Row DCol = Cells(10, Columns.Count).End(xlToLeft).Column For i = 11 To DLig ID = Range("A" & i).Value Set Trouve = PlageDeRecherche.Find(what:=ID, LookAt:=xlWhole) If Not Trouve Is Nothing Then therow = Trouve.Row .Range(.Cells(i, 17), .Cells(i, DCol)).Copy Destination:=Sheets("Feuil1").Range("Q" & therow) End If Next i End With Next f End Sub
Cdlmnt -
Exact
ID = Range("A" & i).Value
Il manque le . (point) devant Range pour référence à la feuille Sheets(f)
..... que j'ai oublié aussi-
-
Si on veut
With Sheets(f)
toute référence de plage/cellule commençant par .
sera vue dans sheets(f)
d'ailleurs, dans ton code tu en as pas mal
DLig = .Range("A" & Rows.Count).End(xlUp).Row --> dans sheets(f)
DCol = Cells(10, Columns.Count).End(xlToLeft).Column --> dans ?
il manque le point ici aussi (pas dramatique car toutes
les feuilles ont la même ligne 10, mais ce n'est pas beau donc ....
End With -
-
-
If FeuilleExiste(Ori) Then liFC = Sheets(Ori).Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets(FS).Rows(liFS).Copy Sheets(Ori).Cells(liFC, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats Sheets(Ori).Cells(liFC, 1).PasteSpecial Paste:=xlPasteFormats Else Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Ori Sheets(FS).Rows(lideb).Copy Sheets(Ori).Cells(lideb, 1) Sheets(FS).Rows(liFS).Copy Sheets(Ori).Cells(lideb + 1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats Sheets(Ori).Cells(lideb + 1, 1).PasteSpecial Paste:=xlPasteFormats End If -
DE rien
Si c'est fini, merci de mettre le sujet à Résolu (en haut à droite de ton premier message)
Bonne fin de journée
et bon courage pour la suite ....