Mettre à jour des données dans une autre feuille

Résolu/Fermé
acr-onyme Messages postés 4 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 23 janvier 2017 - 22 janv. 2017 à 10:00
acr-onyme Messages postés 4 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 23 janvier 2017 - 23 janv. 2017 à 12:52
bonjour

J''ai deux fichiers excel semblables avec des tonnes de données "Feuiile-1 et feuille-2". (feuille-2 est une copie de feuille-1),elles ont une entête sur les 2 premières ligne A1 et A2, les données (que du texte sauf l'ID), commencent sur la ligne A3 avec les m nr d'ID et finissent BB4000.

L’idée est que si j'effectue des changements d'une valeur dans une ligne de la feuille-1, que ces changements soient reprises dans la feuille-2 (mise à jour) et que toute la ligne dans la feuille-1 soie effacée.

Merci d'avance pour toutes vos solutions
A voir également:

5 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
22 janv. 2017 à 15:22
Bonjour Acr-onyme, bonjour le forum,

Peut-être comme ça (non testé) :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim R As Range 'déclare la variable R (Recherche)

If Target.Column = 1 Then Exit Sub 'si le changement a lieu dans la colonne 1 (=A), sort de la procédure
'définit la recherche R, (recherche dans la colonne A de l'onglet "Feuil2", le numero ID de la cellule modifiée)
Set R = Sheets("Feuil2").Columns(1).Find(Cells(Target.Row, 1), , xlValues, xlWhole)
If Not R Is Nothing Then 'si il existe au moins une occurrence trouvée
    Cells(Target.Row, 1).Resize(1, 54).Copy R 'renvoie la ligne de la cellule modifiée dans R
    Cells(Target.Row, 1).Resize(1, 54).ClearContents 'efface le contenu de la ligne de la cellule modifiée
    'si tu veux supprimer la ligne : Rows(Target.row).delete
End If
End Sub


Macro événementielle à placer dans le composant VBA Feuil1(Feuil1).
0
acr-onyme Messages postés 4 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 23 janvier 2017
22 janv. 2017 à 19:32
Bonsoir ThauTheme

Hiii la macro ne démarre pas!

Qu'est tu veux dire par "au changement dans l'onglet", je n'arrive pas à interpréter

Merci d'avance pour ton aide
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
23 janv. 2017 à 00:07
Re,

Où l'as-tu placée ? Il faut la mettre dans le composant VBA de l'onglet où elle doit agir...

Copie le code fourni, clique avec le bouton droit dans l'onglet où tu veux qu'elle agisse (en bas). Choisis l'option Visualiser le code. Colle le code là où le curseur clignote.

La macro agira chaque fois que tu modifieras (édition / modification ou effacement) une cellule de cet onglet ailleurs que dans la colonne A...

Si ton classeur a une extension xlsx, il te faudra l'enregistrer sous xlsm pour conserver le code.
0
acr-onyme Messages postés 4 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 23 janvier 2017
23 janv. 2017 à 10:31
huuu c'est magique ton truc !

Mea-culpa, je n'avais bien saisie la procédure

J'ai un petit problème, c'est que dès qu'il y a un changement la ligne est effacée, alors que je n'ai pas fini toutes les mises à jours dans la rangée.

Serait-il possible d'adapter la macro, afin que je commande moi-m la mise à jour (il m'arrive de ne pas avoir toutes les infos en m temps).

Je te remercie, c'est sympa de ta part

acr-onyme
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
23 janv. 2017 à 11:17
Re,

Remplace le code précédent par celui-ci (toujours au même endroit) :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim R As Range 'déclare la variable R (Recherche)

Cancel = True 'évite le mode [Édition] lié au double-clic
'définit la recherche R, (recherche dans la colonne A de l'onglet "Feuil2", le numero ID de la cellule modifiée)
Set R = Sheets("Feuil2").Columns(1).Find(Cells(Target.Row, 1), , xlValues, xlWhole)
If Not R Is Nothing Then 'si il existe au moins une occurrence trouvée
    Cells(Target.Row, 1).Resize(1, 54).Copy R 'renvoie la ligne de la cellule modifiée dans R
    Cells(Target.Row, 1).Resize(1, 54).ClearContents 'efface le contenu de la ligne de la cellule modifiée
    'si tu veux supprimer la ligne : Rows(Target.row).delete
End If
End Sub


Cette macro événementielle agit au double-clic. Donc quand tu auras finis d'éditer les données de la ligne, il te suffira de double-cliquer sur n'importe quelle cellule de cette ligne pour que ça fonctionne... Toujours non testé car j'ai la flemme de recrée ton environnement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
acr-onyme Messages postés 4 Date d'inscription dimanche 22 janvier 2017 Statut Membre Dernière intervention 23 janvier 2017
23 janv. 2017 à 12:52
Bonjour ThauTheme

quoi dire !

t'es top

je te remercie

acr-onyme
0