Copie de données automatique dans autre feuille

Bonjour à tous,

Je me permets de venir ici car je n'ai pas trouvé de solution à mon problème.

J'ai à la base 4 feuilles différentes qui reprennent la même chose et pour lesquelles j'effectue donc des copier-coller. Dans l'idéal je souhaiterais mettre en place de copies automatiques entre ses différentes feuilles.

Voici le détail :

Feuille 1 = SUIVI COMMANDE GENERAL : dans celle-ci on ajoute toutes nos nouvelles commandes

Feuill 2, 3 et 4 = RP1 / RP2 et RP3 : ce sont les feuilles par commercial. Dans celles-ci je copie donc uniquement les lignes qui sont attribuées au commercial correspondant. Et seulement les colonne A à F.

Sachant que je veux toujours garder mon suivi général intact.

Avez-vous une solution ?

Je vous remercie par avance et reste bien sûr à votre disposition pour toutes questions.

En PJ le fichier simplifié.

Bonjour,

proposition (pas simple car les données en sont pas structurées en un seul et unique tableau)

Sub dispatcher()
Dim f As Worksheet, s As Worksheet, RP As Variant

commercial = Array("RP1", "RP2", "RP3", "RP4") ' on peut les déterminer en automatique
Set s = Sheets("SUIVI COMMANDE GENERAL")

Application.DisplayAlerts = False
For Each f In Worksheets
    If f.Name <> s.Name Then f.Delete
Next
Application.DisplayAlerts = True

Application.ScreenUpdating = False
For Each RP In commercial
    Set f = Sheets.Add(After:=Sheets(Sheets.Count))
    f.Name = RP
    s.UsedRange.Copy Destination:=f.Cells(1, 1)
    For i = f.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If f.Range("G" & i) <> "" And f.Range("G" & i) <> RP Then f.Rows(i).Delete
    Next
    f.Columns("G:J").Delete Shift:=xlToLeft
Next
Application.ScreenUpdating = True

End Sub

bonsoir

sans vba (pour le fun) rien que pour RP1

cordialement

17lucieto.xlsx (57.96 Ko)

C'est bien Tulipe ... on va bientôt voir arriver les PowerQuery Boys.

C'est bien Tulipe ... on va bientôt voir arriver les PowerQuery Boys.

bonsoir

le plus dur c'est d'arriver à faire les "sous totaux" mensuels , car ils sont mobiles

Bonjour à vous,

Merci pour vos réponses, sauriez-vous m'expliquer un peu ce que vous avez fait ?

Je ne comprends pas forcément et si je dois modifier quelque chose ça risque d'être compliqué pour moi.
Je ne m'y connais pas du tout en VBA en plus .

Merci d'avance !

En ce qui me concerne https://forum.excel-pratique.com/excel/copie-de-donnees-automatique-dans-autre-feuille-147952#p91121..., tu appuies juste sur dispatcher ! si tu as bien téléchargé la proposition !

Le principe a été de recopier la feuille puis supprimer les lignes ne correspondant pas au RP et supprimer les colonnes inutiles.

Ouvre la macro par Alt+F11, j'ai mis dans une instruction le nom des RP, mais j'ai indiqué que je pouvais le détecter en automatique si besoin.

En complément, avec détection automatique des noms de commerciaux

Sub dispatcher()
Dim f As Worksheet, s As Worksheet, RP As Variant
Dim commercial As Object
Set s = Sheets("SUIVI COMMANDE GENERAL")
Set commercial = CreateObject("Scripting.Dictionary")

Application.ScreenUpdating = False

Application.DisplayAlerts = False
For Each f In Worksheets
    If f.Name <> s.Name Then f.Delete
Next
Application.DisplayAlerts = True

For i = 1 To s.Range("G" & Rows.Count).End(xlUp).Row
    If s.Range("G" & i) <> "" And s.Range("G" & i) <> "Commercial" Then commercial(s.Range("G" & i).Value) = ""
Next

For Each RP In commercial
    Set f = Sheets.Add(After:=Sheets(Sheets.Count))
    f.Name = RP
    s.UsedRange.Copy Destination:=f.Cells(1, 1)
    For i = f.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If f.Range("G" & i) <> "" And f.Range("G" & i) <> RP Then f.Rows(i).Delete
    Next
    f.Columns("G:J").Delete Shift:=xlToLeft
Next

Application.ScreenUpdating = True

End Sub

Re !

Merci pour ton retour rapide ! J'ai testé avec un mois pour le moment et ça marche ! Trop fort (moi j'aurais jamais réussi étant ignorante en VBA)...

Par contre petite question, comment je peux faire si pour certains commerciaux je ne veux pas qu'il y ai de copie ? RP1 et RP2 par exemple.
Et si je veux nommer mes commerciaux par leur noms/prénoms est-ce que cela va tout changer ?

Merci d'avance.

Avec la première version, tu peux mettre des noms à condition de les reporter dans la macro.

commercial = Array("RP1", "RP2", "RP3", "RP4")

Avec la dernière version tu peux mettre les noms à la place de RPx sans intervenir dans la macro, mais tu ne peux pas ne pas les éditer ! Tans pis, supprime après coup l'onglet.

Re !
Merci pour ta réponse, c'est vraiment un gain de temps pour moi.

Dernières questions je l'espère :

- comment faire pour garder la mise en forme du premier tableau (même largeur de colonne par exemple / mise en forme conditionnelle...) ?

- Comment faire pour ajouter des formules dans les pages des RPx sans qu'elles disparaissent lors du dispatch ? (peut-être que ce n'est pas possible)

- si toutefois je veux quand même garder les colonnes du premier tableau est-ce que je dois juste supprimer cette ligne là dans la macro ?

Next
f.Columns("G:J").Delete Shift:=xlToLeft

Par contre j'ai un problème à l'enregistrement... Est-ce que c'est à cause du fichier qui devient trop lourd ?

Il bug à la fermeture et m'ouvre une version d'il y a une heure...

Merci encore

- si toutefois je veux quand même garder les colonnes du premier tableau est-ce que je dois juste supprimer cette ligne là dans la macro ?

Next
f.Columns("G:J").Delete Shift:=xlToLeft

que celle-ci

Next
f.Columns("G:J").Delete Shift:=xlToLeft

pas Next

- comment faire pour garder la mise en forme du premier tableau (même largeur de colonne par exemple / mise en forme conditionnelle...) ?

ok c'est pris en compte dans cette version

Par contre j'ai un problème à l'enregistrement... Est-ce que c'est à cause du fichier qui devient trop lourd ?

Il bug à la fermeture et m'ouvre une version d'il y a une heure...

re-essaye, je n'ai aucun soucis, ferme les autres fichiers si tu en as trop d'ouvert

- Comment faire pour ajouter des formules dans les pages des RPx sans qu'elles disparaissent lors du dispatch ? (peut-être que ce n'est pas possible)

Cela dépend ... elles devraient rester.

Essaie et dis moi lesquelles disparaissent.

Merci encore, c'est parfait pour que la mise en forme reste ainsi que pour garder les colonnes au besoin.

Pour l'instant pas de nouveau bug de sauvegarde, j'espère que ça va durer...

Pour les formules qui ne restent pas dans les feuille des RPx, j'ai par exemple une formule SOMME.SI par mois. Elle me calcule ce qu'il reste par commerciaux en fonction du remplissage de la colonne J. Et effectivement quand je dispatche ça s'efface.

Merci d'avance !

Le plantage sur excel est assez variable, cela m'arrive sans raison. Je ne pense pas que ce soit dû à la macro qui est simplissime.

Où se trouve cette formule ? Il y a peut-être moyen de faire quelque chose de simple.

Bonjour,

Je te mets en PJ le tableau avec la formule ajoutée sur les pages des différents RP.

Dis moi ce que tu en penses.

merci d'avance

Cela fonctionne à condition de mettre aussi la formule (et la ligne supplémentaire) dans l'onglet principal.

J'ai juste modifié une ligne du code.

Bonjour,

ça fonctionne bien ! Pour ce qui est de l'enregistrement pas de nouveau bug mais c'est juste long.

En tout cas merci pour tout !!

Bonjour Steelson,

Je reviens vers toi pour te dire que dans le fonctionnement général c'est top mais par contre pour l'enregistrement ça l'est moins dans le sens où ça prend quelques heures à s'enregistrer... Je t'avoues que le temps que je gagne au dispatch je le perds à l'enregistrement. A la fin quelques fois ça me marque : "Cette image est trop grande et va être tronquée". Quel est ton avis sur cela ? Est-ce parce que j'ai beaucoup trop d'entrées ?

Merci d'avance.
Cordialement,

Rechercher des sujets similaires à "copie donnees automatique feuille"