Mettre à jour des données dans une autre feuille

Résolu
acr-onyme Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
acr-onyme Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
Bonjour ThauTheme

quoi dire !

t'es top

je te remercie

acr-onyme
0