XL 2019 VBA - Copier des lignes sous conditions dans des autres feuilles

MagaliRC

XLDnaute Nouveau
Bonjour,

Je suis grande débutante dans le VBA.

Voilà mon soucis, j'ai créé un classeur pour la gestion d'un cimetière.
Dans ce classeur, j'ai plusieurs feuilles :
une feuille général qui récapitule toutes mes données
et des autres feuilles qui correspondantes aux différents zonage du cimetière.

J'entre mes données dans la feuille Général et je souhaiterai copier les lignes dans les feuilles si celle-ci correspondent à la zone.
Par exemple, si la ligne appartient à la zone Fuschias, il faut que toute la ligne se colle dans la feuille Fuschias.
En plus, je souhaiterai que les mises à jour de ces feuilles se fasse soit par l'intermédiaire d'un bouton "Mise à Jour" soit par en cliquant directement sur ma feuille en question.

Je vous joins le fichier concerné, j'ai juste tenté avec la feuille General et mis du VBA dans la feuille Fuschias.
J'ai mis le code que j'avais trouvé sur le net car il me semblait bien sauf que je devais l'adapter et là ça coince au niveau de mes feuilles sheet("feuil10") et je ne comprends pas pourquoi.

Est-ce que quelqu'un peut m'aider ?

Je vous remercie beaucoup.
 

Pièces jointes

  • Copie de Cimetiere-infosgenerales.xlsm
    794.6 KB · Affichages: 13
Solution
re magalirc
dans le fil2 je vous ai proposé une solution en simplifiant le classeur mais sans évaluer la macro. elle n'est pas top.
tester plutôt la version de ce fil. tester aussi le classeur, il a évolué avec des boites de dialogue, ainsi qu'une mise en forme de tous vos onglets.
VB:
Sub BOUCLE_CLASSEUR_MF()

Dim k As Integer, i As Integer
Application.ScreenUpdating = False
k = Sheets.Count
derlig = Sheets("GENERAL").Range("a" & Rows.Count).End(xlUp).Row
Call efface
Sheets("GENERAL").Select
For i = 1 To k
For lig = 1 To derlig
x = Sheets(i).Range("a" & Rows.Count).End(xlUp).Row + 1
    If Sheets(i).Name <> Sheets("GENERAL").Name Then
    If Sheets(i).Name <> Sheets("BDD").Name Then
    If Sheets("GENERAL").Cells(lig, 2) =...

GALOUGALOU

XLDnaute Accro
re magalirc bonjour le forum
dans votre classeur la macro de la feuille Fuschias fait doublon avec la macro du module 2
de plus dans la feuille fuchsias l'étendue du tableau a 16 384 colonnes n'est pas cohérent. cela conduit à une trés grande lenteur du classeur. j'ai donc supprimé cela.
j'ai adapté la macro du module 2 pour répondre à votre problématique.
Maintenant la conception du classeur vous appartient, mais je ne comprends pas l'utilité de la feuille général. de plus je n'ai pris aucune initiative en ce sens, mais une fois les données mise à jour, faudrait-il (ou non) supprimer toutes les informations de la feuille général.
En l'état, chaque mise à jour conduira à dupliquer plusieurs fois les mêmes informations.
cordialement
galougalou
 

Pièces jointes

  • Copie de Cimetiere-infosgenerales.xlsm
    82.5 KB · Affichages: 16

MagaliRC

XLDnaute Nouveau
re magalirc bonjour le forum
dans votre classeur la macro de la feuille Fuschias fait doublon avec la macro du module 2
de plus dans la feuille fuchsias l'étendue du tableau a 16 384 colonnes n'est pas cohérent. cela conduit à une trés grande lenteur du classeur. j'ai donc supprimé cela.
j'ai adapté la macro du module 2 pour répondre à votre problématique.
Maintenant la conception du classeur vous appartient, mais je ne comprends pas l'utilité de la feuille général. de plus je n'ai pris aucune initiative en ce sens, mais une fois les données mise à jour, faudrait-il (ou non) supprimer toutes les informations de la feuille général.
En l'état, chaque mise à jour conduira à dupliquer plusieurs fois les mêmes informations.
cordialement
galougalou
Petite explication, j'ai besoin d'avoir une vue sur le cimetière en générale et d'avoir une vue sur chaque zone, car le cimetière est découpé en zone.

Je met mes tableaux au propre avec plus de clarté dès la semaine prochaine.
Par contre le seul hic, lorsque je fais les mises à jour il me copie plusieurs fois la même ligne dans mon autre feuille. Il ya t'il un moyen pour vider le tableau par exemple Myosotis avec "clearcontent" pour éviter les doublons.

Merci beaucoup

Magali
 

GALOUGALOU

XLDnaute Accro
re magalirc
dans le fil2 je vous ai proposé une solution en simplifiant le classeur mais sans évaluer la macro. elle n'est pas top.
tester plutôt la version de ce fil. tester aussi le classeur, il a évolué avec des boites de dialogue, ainsi qu'une mise en forme de tous vos onglets.
VB:
Sub BOUCLE_CLASSEUR_MF()

Dim k As Integer, i As Integer
Application.ScreenUpdating = False
k = Sheets.Count
derlig = Sheets("GENERAL").Range("a" & Rows.Count).End(xlUp).Row
Call efface
Sheets("GENERAL").Select
For i = 1 To k
For lig = 1 To derlig
x = Sheets(i).Range("a" & Rows.Count).End(xlUp).Row + 1
    If Sheets(i).Name <> Sheets("GENERAL").Name Then
    If Sheets(i).Name <> Sheets("BDD").Name Then
    If Sheets("GENERAL").Cells(lig, 2) = Sheets(i).Cells(1, 27) Then
      Sheets("GENERAL").Range(Cells(lig, 1), Cells(lig, 20)).Select
    Selection.Copy
     Sheets(i).Cells(x, 1).PasteSpecial xlPasteValues
 
    End If
   End If
End If
Next lig
Next i
Application.ScreenUpdating = True
MsgBox "Mise à jour terminée !"
End Sub
Sub efface()

Dim k As Integer, i As Integer
k = Sheets.Count
For i = 1 To k
Sheets(i).Activate
 
    dl = Sheets(i).Range("a" & Rows.Count).End(xlUp).Row + 1
    If Sheets(i).Name <> Sheets("GENERAL").Name Then
    If Sheets(i).Name <> Sheets("BDD").Name Then
    Sheets(i).Range(Cells(4, 1), Cells(dl, 20)).ClearContents
    End If
   End If
Next i
Sheets("GENERAL").Select
End Sub
Les saisies se font dans la feuille GENERAL, le bouton mise à jour disperse toutes les informations dans tous les onglets.
un formulaire présente la feuille active pendant le déplacement.
cdt
galougalou
 

Pièces jointes

  • cimetiere v6.xlsm
    101.4 KB · Affichages: 33
Dernière édition:

Discussions similaires