Répéter Macro éditon sur plusieur feuilles

Bonjour

Mon fichier comporte un onglet caisse et un onglet facture par caisse. Et il ya aura au final environ 20 onglets caisses donc 20 onglets facture

Sur "Caisse1" j'arrive à préparer la facture via une macro simple.

Dans un 1er temps cela efface les anciennes données de"Facture caisse1" puis copie les lignes de facture de "caisse1" que j'ai sélectionné, et colle le données dans l'onglet "Facture Caisse1" en A65.

La facture se rempli avec des formules simples.

Sheets("Facture Caisse1").Select
Rows("65:65").Select
ActiveWindow.SmallScroll Down:=38
Rows("65:103").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-15
Sheets("Caisse1").Select
Selection.Copy
Sheets("Facture Caisse1").Select
Range("A65").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-38
ActiveWindow.Zoom = 85
ActiveWindow.SmallScroll Down:=-6
Range("B17").Select
Application.CutCopyMode = False

MAIS je n'arrive pas à faire le même procédé pour caisse 2 et copier les informations dans Factures Caisse2 et surtout quand il y aura les 20 caisses cela va prendre du temps pour passer toute la macro en revue.

J'ai essayé de dupliquer ma macro en modifiant le nom des feuilles mais cela ne fonctionne pas bien

Avez vous un solution

Cordialement

13classeur1.xlsx (222.86 Ko)

Bonjour

Regarde si cela te convient s'il y a problème tu le dis

selon le nombre de caisses que tu as tu modifie ce morceau de code

' Boucle pour chaque caisse de 1 à 25
For i = 1 To 2 'actuellement pour 2 caisses

11classeur1-1.xlsm (215.80 Ko)

Ps Actuellement je modifie le fichier pour le rendre plus automatique

Crdlt

Bonjour et merci de t'être penché sur le sujet

Alors la macro créé copie les données de l'ensemble des caisses (une par une) et les colles dans l'onglet facture Caissexx. Mais il faut que le fonctionnement de chaque onglet caisse soit bien distincts les un des autres.

Le clic sur l'imprimante de la caisse1 un alimente l'onglet Facture Caisse1, le clic sur l'imprimante Caisse2 alimente la feuille Facture Caisse2...

J'ai mis en PJ le résultat à obtenir après exécution de la macro

PS : il y aura aussi des onglets "Vendeur1" avec l'onglet facture associé "Facture Vendeur1"...

9classeur1-v2.xlsm (216.65 Ko)

Bonne journée

Bonjour Choupez974, bonjour Joco7915 ,

Je n'y comprends rien ! En général, il faut m'expliquer longtemps .

Sur "Caisse1", vous avez 7 lignes de produits. Sur "Facture Caisse1", il n'y en a plus que 3.

Sur "Caisse2", vous avez 7 lignes de produits (d'ailleurs les mêmes que sur "Caisse1"). Sur "Facture Caisse2", il n'y en a plus que 4.

Dites-nous clairement comment on retrouve ses petits alors que sur les feuilles "CaisseN", il n'y a aucune indication de numéro de caisse ? Quand on explique, on fait comme si l'interlocuteur n'y connaissait rien, ce qui en l'occurrence est notre cas.

A+

Bonjour

Regarde cela si c'est un bon début

9classeur1-1.xlsm (256.24 Ko)

Bonjour

Merci pour la création automatique des 2 onglets c'est pratique

Mais le plus important c'est de pouvoir caisse par caisse pourvoir préparer la facture adéquat. Vu que le fichier sera partagé avec plusieurs utilisateurs et que chaque utilisateur gèrera sa propre caisse.

Donc il doit y avoir un traitement distinct entre caisse1 / factures caisse1, caisse2 / facture2 ....

@mafraise

L'onglet caisse 1 correspond a un journal de vente que je veux éditer sur Facture caisse1

Donc je sélectionne l'ensemble d'une facture par exemple test2 je copie et colle les données dans l'onglet Facture Caisse 1

image

et colle les données dans l'onglet Facture Caisse1

image

et cela remplir la facture du dessus et le vendeur n'a plus qu'a remplir les informations du client et éditer la facture

image

J'arrive à créer une macro pour la caisse1 (voir mon premier post) mais pour géné la meme traitement sur la caisse2 , voir les autres caisses (3,4,5....) cela beug et faire un traitement long.

Chaque onglet caisse ou onglet vendeur et géré par une personne différente (fichier partagé en réseau)

J'espère que j'ai été plus clair dans ma problématique et mon besoins

Cordialement

Merci Choupez974,

Juste encore un petit point. Sur les images du précédent message :

  • La feuille "Caisse1" montre 7 lignes
  • La feuille "Facture Caisse1" ne montre que 4 lignes

Je ne comprends toujours pas comment vous choisissez les lignes de "Caisse1" pour les recopier sur "Facture Caisse1" ?

Si je comprend bien le caissier de la caisse 1 ne doit pas avoir accés a l'onglet des autres caisses

Sur l'onglet DATA tu peux choisir le nombre de caisses que tu veux

Pour réaliser cela

L'onglet caisse 1 correspond a un journal de vente que je veux éditer sur Facture caisse1

Donc je sélectionne l'ensemble d'une facture par exemple test2 je copie et colle les données dans l'onglet Facture Caisse 1

Il faut un onglet spécial récapitulatif

Re,

On sélectionne les lignes "Test2" mais pourquoi pas "Test1" qui se trouve aussi sur la feuille "Caisse1" ?

C'est sans doute de ma faute mais Il y a un truc qui doit m'échapper...

Quelle facture de "CAISSE1" doit-on prendre (Test1 ou Test2) pour l'éditer sur Facture Caisse1" ?

Test1 correspond à un numéro de facture (colonne Numéro de facture)

Test2 correspond à une autre facture

donc on sélectionne l'ensemble des éléments constituant la facture.

la prochaine serait test3 ....

Re,

Merci, je crois que j'ai maintenant compris (je suis lent à la comprenette)

Bonjour

J'ai trouvé la solution voici le code que j'ai saisi pour information

Sub GenererFacture()
Dim nomSource As String
Dim prefixe As String
Dim nomFacture As String
Dim wsSource As Worksheet
Dim wsFacture As Worksheet

' Récupère le nom de la feuille active
nomSource = ActiveSheet.Name

' Vérifie que le nom commence par "Caisse" ou "Vendeur"
If Left(nomSource, 6) = "Caisse" Then
prefixe = "Caisse"
ElseIf Left(nomSource, 7) = "Vendeur" Then
prefixe = "Vendeur"
Else
MsgBox "Cette macro doit être lancée depuis une feuille Caisse ou Vendeur.", vbExclamation
Exit Sub
End If

' Construit le nom de la feuille facture correspondante
nomFacture = "Facture " & nomSource

' Vérifie que la feuille facture existe
On Error Resume Next
Set wsFacture = Sheets(nomFacture)
On Error GoTo 0

If wsFacture Is Nothing Then
MsgBox "La feuille '" & nomFacture & "' n'existe pas.", vbCritical
Exit Sub
End If

' Référence la feuille source
Set wsSource = Sheets(nomSource)

' Efface les anciennes données dans la facture
With wsFacture
.Rows("65:103").ClearContents
End With

' Copie la sélection depuis la feuille source
If TypeName(Selection) <> "Range" Then
MsgBox "Aucune donnée sélectionnée à copier.", vbExclamation
Exit Sub
End If

Selection.Copy

' Colle les valeurs dans la facture à partir de A65
With wsFacture
.Range("A65").PasteSpecial Paste:=xlPasteValues
.Activate
ActiveWindow.Zoom = 85
.Range("B17").Select
End With

' Nettoyage
Application.CutCopyMode = False

MsgBox "Facture générée pour " & nomSource & " !", vbInformation
End Sub

Merci de votre aide

Re Bonjour

A force d'ajouter des conditions ton fichier va devenir une véritable usine à gaz.

Pourquoi autant d'onglet ?

En ce qui me concerne je laisse ma place pour les solutions

Crdlt

Re,

Comme j'ai fait quelque chose, je publie puis je laisse la main à Joco7915,

Il suffit de :

  • sélectionner la feuille "Caisse" concernée
  • sélectionner la facture (plage quelconque au sein des lignes de la facture à éditer)
  • cliquer sur le bouton

Salut mafraise,

Je laisse ma place à qui voudra la prendre.

Motif :des infos au compte goutte

pas de réponse précises au demande

les réponses ne sont pas toujours compréhensibles

et comme je l'ai dit une vraie usine à gaz

Crdlt

Rechercher des sujets similaires à "repeter macro editon feuilles"