Mettre à jour une ligne dans une autre feuille

hey

XLDnaute Nouveau
Bonsoir tout le monde

sos, j'ai un problème, qui commence à me ronger!

Le problème est le suivant:
J'ai deux feuilles contenant des données, dont l'une sert de back-up de plusieurs autres feuilles. L'idée serait que si je change une donnée dans une ligne dans la feuille-1, que la ligne correspondante dans la feuille-2 soit mise à jour.

L'ennui est que les lignes ne sont pas toutes à la m place dans les 2 feuilles. Je pense qu'il faudrait faire une recherche dans la feuille-2, puis un copier-coller, mais je n'ai aucune idée comment faire.

Merci d'avance pour votre aide
Hey
 

bbb38

XLDnaute Accro
Re : Mettre à jour une ligne dans une autre feuille

Bonjour Hey, le forum,
En VBA, on trouve plusieurs méthodes pour effectuer une recherche : Fonction VLOOKUP (RECHERCHEV), Find, FindNext, FindPrevious, par Array, filtres, etc..
Pour ma part, sans un petit fichier d’exemple (en évitant les données confidentielles), difficile de te donner une solution.
Cordialement,
Bernard
 

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Bonjour Bernard

Ci-joint un fichier "bidon" pour essayer d'illustrer mes propos

merci
Hey
 

Pièces jointes

  • Fichier bidon.xlsx
    12 KB · Affichages: 43
  • Fichier bidon.xlsx
    12 KB · Affichages: 35

fhoest

XLDnaute Accro
Re : Mettre à jour une ligne dans une autre feuille

Bonjour Hey,bbb38
avec le code suivant dans un module:
Code:
Sub maj()
Dim s As Integer
Dim j As Byte,i as Byte
if Activesheet.name="Backup" then Exit Sub
j = 2
s = CInt(Right(ActiveSheet.Name, 1))
For i = 8 To 1 Step -1
Sheets("Backup").Range("A" & s * 8 - i + 2) = ActiveSheet.Range("A" & j)
Sheets("Backup").Range("B" & s * 8 - i + 2) = ActiveSheet.Range("B" & j)
Sheets("Backup").Range("C" & s * 8 - i + 2) = ActiveSheet.Range("C" & j)
Sheets("Backup").Range("D" & s * 8 - i + 2) = ActiveSheet.Range("D" & j)
j = j + 1
Next
End Sub
Puis un bouton sur chaque feuille ou dans un onglet qui appelle le code.
Voilà ce que je te propose.
suivant l'exemple que tu as fournis
A bientôt.
 

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Bonjour bbb38

Merci de ta réponse!

Pourrais-tu me le "transcrire en langage commun", car dans mon exemple, je n'ai mis que 8 lignes, mais il y en a plus de 1000 par feuilles et j'ai peur de ne pas pouvoir écrire un texte pour chaque ligne, à moins de n'avoir pas compris ton code.

Hey
 

fhoest

XLDnaute Accro
Re : Mettre à jour une ligne dans une autre feuille

Bonjour Hey,

As-tu vu ce que j'ai mis ? car dans ton message tu t’adresses à bbb38 (que je salut au passage,ainsi que cathodique)
si tu as besoins d'adaptation du code à ton projet il m'en faudra un peu plus,
je peux faire le remplacement d'une seule lignes si c'est trop de mettre à jour un ensemble comme j'ai mis dans le code précédent.
A toi de voir.
Code:
Sub maj()'définition des variables
Dim c As Range
Dim sh As Worksheet
Dim drligne As Long
Dim zone As Range
Dim i As Byte
'instanciation des variables
Set sh = Sheets("Backup")
drligne = sh.Range("A1").End(xlDown).Row + 1 'recherche de la dernière ligne de la feuille backup
Set zone = sh.Range("A2:A" & drligne)
'**********************************************


'boucle de recherche de la cellule Axx dans la feuille Backup
For Each c In zone
'comparaison de valeur
'si la cellule sélectionner est égale à celle de la feuille Backup
'on exécute le code qui suit le mot clé "then"
    If ActiveCell.Value = c.Value Then
'on boucle sur 3 cellules afin de modifier les valuer (en quelques sortes faire une mise à jour de la ligne)
    For i = 1 To 3
    c.Offset(0, i).Value = ActiveCell.Offset(0, i).Value
    Next
    End If


Next


End Sub

A bientôt.:)
 
Dernière édition:

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Bonjour fhoest

Mille excuses, apparemment, j'ai dû avoir un problème, je n'ai que ton premier message

je vais essayer d'être plus clair:

1.L'idée est de " backuper " une ligne de feuille-1 à feuille-2, d'après L'ID de ma ComboBox39 de feuille-1
2.Faire une recherche d'après l'ID dans feuille-2.
2.a.Si l' ID n'y est pas, copie dans A4 feuille-2
2.b.Si l' ID est déjà dans la feuille-2, mise à jour de toute la ligne dans feuille-2

Le problème est que l'ID dans la feuille-2, se trouve entre A4 et A15000

J'espère avoir été un petit peu plus clair

Merci
Hey
 

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Bonjour fhoest

J'ai pu enfin avoir ton deuxième message (problème de réseau), je n'ai pas su interpréter la ligne " If ActiveCell.Value = c.Value"

Car la valeur recherché est A4 de la feuille-1, et si elle se trouve aussi dans la feuille-2, la mettre à jour dans la feuille-2 ou si non la copier dans A4 de la feuille-2

j'espère ne pas t'avoir trop embrouillé
Hey
 

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Hey that's me again

Je viens de remarquer un petit problème, qui risque d'anéantir tout le travail déjà parcouru

Etant donné que j'actualise mes données de ma feuille-1 depuis ma combobox39, il faudrait adapter la macro de fhoset pour que ma mise à jour depuis la combobox39 puisse aussi agir sur la feuillle-2 . (ex ID 5 est mise à jour en feuille-1,,,, automatiquement il devrait aussi être mise à jour en feuille-2)

pas évident hein!
merci
Hey
 

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

Hey that's me again

Je viens de remarquer un petit problème, qui risque d'anéantir tout le travail déjà parcouru

Etant donné que j'actualise mes données de ma feuille-1 depuis ma combobox39, il faudrait adapter la macro de fhoset pour que ma mise à jour depuis la combobox39 puisse aussi agir sur la feuillle-2 . (ex ID 5 est mise à jour en feuille-1,,,, automatiquement il devrait aussi être mise à jour en feuille-2)

pas évident hein!
merci
Hey
 

fhoest

XLDnaute Accro
Re : Mettre à jour une ligne dans une autre feuille

Bonsoir,
sans la combobox39 toujours sur le même esprit mais avec l'insertion de ligne si la valeur n'existe pas:
Code:
'Sélectionner la cellule à rechercher dans l'onglet Backup'exemple se mettre sur la cellule A5 de section-1 puis lancer le code
'va permettre de remplacer les données de cette même ligne dans la feuille Backup


Sub maj()
'définition des variables
Dim c As Range
Dim sh As Worksheet
Dim drligne As Long
Dim zone As Range
Dim i As Byte
Dim present As Boolean


'instanciation des variables
Set sh = Sheets("Backup")
drligne = sh.Range("A1").End(xlDown).Row + 1 'recherche de la dernière ligne de la feuille backup
Set zone = sh.Range("A2:A" & drligne)
'**********************************************


'boucle de recherche de la cellule Axx dans la feuille Backup
For Each c In zone
'comparaison de valeur
'si la cellule sélectionner est égale à celle de la feuille Backup
'on exécute le code qui suit le mot clé "then"
    If ActiveCell.Value = c.Value Then
'on boucle sur 3 cellules afin de modifier les valuer (en quelques sortes faire une mise à jour de la ligne)
    For i = 1 To 3
    c.Offset(0, i).Value = ActiveCell.Offset(0, i).Value
    Next
    present = True
    End If


Next


If present = False Then
sh.Rows("4:4").Insert Shift:=xlDown
For i = 0 To 3
    sh.Cells(4, i + 1).Value = ActiveCell.Offset(0, i).Value
    Next
End If




End Sub

Imaginons que ta ComboBox39 se trouve sur ta feuille ("Section-1")
voici le code de la ComboBox39_Change()

Code:
Private Sub ComboBox39_Change()
'Selectionner la bonne cellule avant de faire la mise à jour
Columns(1).Find(ComboBox39.Value, , , 1, 2).Select
'Appel de la procédure de mise à jour
Call maj
End Sub
Pour la mise à jour qui ressemble à ce que tu veux,peux tu mettre un fichier exemple qui ressemble plus à la réalité.
A+
 
Dernière édition:

hey

XLDnaute Nouveau
Re : Mettre à jour une ligne dans une autre feuille

bouaaa ! super

juste une remarque (sorry)

la ligne copiée est dédoublée (elle est bien en ligne A4, puis se décale en A5, mais le contenu reste copié en A4, ce qui fait que nous avons deux lignes similaires, alors qu'il serait mieux que la ligne A4 soit de nouveau "vide".
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 332
Membres
102 864
dernier inscrit
abderrashmaen