Microsoft 365 Macro copier/coller

stella69670

XLDnaute Nouveau
bonjour,
Je reçois tous les jours plusieurs bons de commandes (ils sont tous identiques) seulement les quantités à commander et le "site" change.
Ces bons de commande, je les copie/colle dans un fichier de récapitulatif.
J'aimerai me simplifier la tâche et mettre en place une macro qui le fait seul. Mais cette macro n'est pas applicable dès sur tous les bons de commandes (surement car le nom est différent) et j'aimerai que ce soit mis à la suite des lignes.
J'ai besoin uniquement des quantités >0 d'où mon filtre sur la macro
Je vous joints les deux fichiers. Un exemple de bon de commande que je reçois (toujours sous la même forme) et mon fichier récapitulatif regroupant mes données à commander.
Je vous remercie pour votre aide.
https://www.cjoint.com/c/JIEo7yqvUny
 

Pièces jointes

  • Recapitulatif.xlsx
    21.2 KB · Affichages: 26
Solution
@stella69670

Attention : n'utilise pas les 2 fichiers précédents, mais ceux de ce post !

--------------------------------------------------------------------------------------

Ouvre "Réassort Bozel hiver 2019.xlsx" ; tu peux voir que j'ai ajouté :

* une Date de commande en C2 : 20/09/20 (fusion C2@D2)
N° de Commande en H2 : 100046-200920 (fusion H2:I2)
(j'ai mis « @ » au lieu de « : » pour éviter le smiley auto.)


* une Date de livraison en E2 : 08/10/20 (fusion E2:G2)

Note aussi que sur la ligne 4...

fanch55

XLDnaute Barbatruc
Bonsoir,
j'ai chargé les 2 fichiers du post #1.
Je ne sais pas quoi en faire, il n'y a aucune macro o_O ni dans l'un ni dans l'autre
Dans "Dossier Recap", pas de filtre en cours .

Je pense que la macro est restée dans votre dossier de macro personnel ( \PERSONAL.XLSB'!Macro4 )
 

stella69670

XLDnaute Nouveau
Bonsoir,
j'ai chargé les 2 fichiers du post #1.
Je ne sais pas quoi en faire, il n'y a aucune macro o_O ni dans l'un ni dans l'autre
Dans "Dossier Recap", pas de filtre en cours .

Je pense que la macro est restée dans votre dossier de macro personnel ( \PERSONAL.XLSB'!Macro4 )

En effet, j'ai oublié de la changer de lieu. La voici mais elle ne marche pas

Sub Macro4()
'
' Macro4 Macro
'

'
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveSheet.Range("$A$4:$N$568").AutoFilter Field:=13, Criteria1:=Array("1" _
, "10", "11", "12", "2", "3", "4", "5", "8", "9"), Operator:=xlFilterValues
ActiveWindow.SmallScroll Down:=-33
ActiveCell.Offset(-19, -11).Range("A1:B1").Select
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 7).Range("A1:B1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, -3).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(0, 1).Range("A1").Select
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1:B1").Select
Application.CutCopyMode = False
Selection.Copy
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(5, -7).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.Range("A1:A196").Select
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1:A196").Select
ActiveCell.Offset(195, 3).Range("A1").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveWindow.SmallScroll Down:=-9
ActiveCell.Offset(-195, 6).Range("A1:A196").Select
ActiveCell.Offset(0, 6).Range("A1").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveWindow.SmallScroll Down:=-15
ActiveCell.Select
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(-200, -5).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Range("A1:A30").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(9, 0).Range("A1").Select
End Sub
 

soan

XLDnaute Barbatruc
Inactif
Bonjour stella, le fil,

Je mets juste entre balises de code ta jolie macro
(telle quelle, sans y avoir fait aucun changement) :
VB:
Sub Macro4()
'
' Macro4 Macro
'

'
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveSheet.Range("$A$4:$N$568").AutoFilter Field:=13, Criteria1:=Array("1" _
, "10", "11", "12", "2", "3", "4", "5", "8", "9"), Operator:=xlFilterValues
ActiveWindow.SmallScroll Down:=-33
ActiveCell.Offset(-19, -11).Range("A1:B1").Select
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 7).Range("A1:B1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, -3).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(0, 1).Range("A1").Select
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1:B1").Select
Application.CutCopyMode = False
Selection.Copy
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(5, -7).Range("A1").Select
Application.CutCopyMode = False
ActiveCell.Range("A1:A196").Select
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(0, 3).Range("A1:A196").Select
ActiveCell.Offset(195, 3).Range("A1").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveWindow.SmallScroll Down:=-9
ActiveCell.Offset(-195, 6).Range("A1:A196").Select
ActiveCell.Offset(0, 6).Range("A1").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveWindow.SmallScroll Down:=-15
ActiveCell.Select
Windows("Réassort Bozel hiver 2019.xlsx").Activate
ActiveCell.Offset(-200, -5).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Recapitulatif.xlsx").Activate
ActiveCell.Range("A1:A30").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Offset(9, 0).Range("A1").Select
End Sub
Tu as fait cette macro à l'aide de l'enregistreur de macro, pas vrai ? ;) tu m'demandes
comment j'ai deviné ? oh, j'ai eu juste une petite intuition, comme ça, au hasard ! :p

C'est marrant : j'ai compté pas moins de 16 changements de fenêtre entre ton classeur
"Réassort Bozel hiver 2019.xlsx" et ton autre classeur "Recapitulatif.xlsx" ! ça en fait,
des allers-retours d'un classeur à l'autre ! et comme je n'ai vu aucun gel de l'écran,
ça doit flasher à peu près autant qu'un sapin le jour de Noël ! sympa la déco ! :p


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Ajout à mon post précédent.

J'ai téléchargé ton fichier "Réassort Bozel hiver 2019.xlsx" ; j'ai supprimé la feuille "Feuil1",
qui est vide ; et bien sûr, j'ai laissé ta feuille "DOSSIER RECAP" ; mais j'aime bien la suite :

Eh ben ! on peut dire qu't'aimes bien faire des cachotteries, toi !!! :p (quelle coquine !!!)
Sur 27 feuilles, une seule était visible ! les 26 autres feuilles étaient cachées !!! ;)
(j'suppose que tu devais adorer le jeu de colin-maillard, quand t'étais jeune !)

J'ai rendu visibles
toutes les feuilles ; comment ? il fallait pas ? pourtant, c'était bien obligé,
pour supprimer sur chaque feuille toutes les lignes et colonnes inutiles !!! résultat : ce fichier
qui était au départ de 2 290 Ko est passé à ... 725 Ko ! :) (tu n'as plus besoin de passer par
cjoint.com pour le transmettre !)

Je te laisse le soin de re-cacher toutes les feuilles ! :p (sauf "DOSSIER RECAP")


-----------------------------------------------------------------------------------------------------

J'ai aussi téléchargé ton fichier "Recapitulatif.xlsx" ; après ton fichier précédent de 27
feuilles, c'est quand même bien reposant de tomber sur un fichier d'une seule feuille
seulement ; j'ai quand même supprimé tes 2 colonnes I et J inutiles ; bien sûr, le gain
de place est beaucoup moins important : le fichier est passé de 22 Ko à 20 Ko ; mais
bon, c'est toujours 2 Ko de gagnés ! ;)


-----------------------------------------------------------------------------------------------------

Je joins tes 2 fichiers allégés ; et je laisse la suite à un autre intervenant. :)

soan
 

Pièces jointes

  • Réassort Bozel hiver 2019.xlsx
    724.5 KB · Affichages: 4
  • Recapitulatif.xlsx
    19.9 KB · Affichages: 1

stella69670

XLDnaute Nouveau
Bonjour Soan,
Quel plaisir de te lire, tu es plain d'humour, j'adore :)

Alors en effet j'ai masqué les onglets pour plus de clarté. Le soucis est que je ne peux pas les supprimer, car toutes les commandes que je réceptionnerai seront avec les mêmes onglets (pour la petite histoire, il y a un onglet par type de locatif, et chaque directeur de camping nous passe commande en réassort par locatif...) et je ne peux pas modifier les colonnes du bon de commande car nous avons une implémentation depuis Excel sur notre logiciel interne.
Mon problème est que j'en reçois énormément, et j'aurai aimé, pouvoir suivre chaque commandes soit par article soit par n° de commande, ou même par camping d'où mes copier/coller monstrueux d'un classeur à l'autre.
Mais peut-être y a t'il un moyen plus efficace ? o_O

Mes salutations.
Stella
 

soan

XLDnaute Barbatruc
Inactif
Re,

Non, bien sûr, il ne faut pas supprimer les onglets qui étaient cachés ! ;)
(et j'comprends très bien qu'tu les avais cachés juste pour simplifier l'exo)

Cela dit :

1) J'ai laissé les onglets supplémentaires visibles : ça ne me gêne pas, et seule la feuille
"DOSSIER RECAP" doit être prise en compte.

2) J'ai écrit dans mon post #9 que je laisse la suite à un autre intervenant ; finalement,
comme j'ai bien compris ce qu'il faut faire, je vais essayer de faire la macro utile. ;)
(mais j'viens à peine de la commencer, et ça va être assez long : si ça tarde beaucoup,
ne t'inquiètes pas : je travaille dessus, et j'posterai ma solution dès que ce sera prêt)


soan
 

soan

XLDnaute Barbatruc
Inactif
@stella69670

Attention : n'utilise pas les 2 fichiers précédents, mais ceux de ce post !

--------------------------------------------------------------------------------------

Ouvre "Réassort Bozel hiver 2019.xlsx" ; tu peux voir que j'ai ajouté :

* une Date de commande en C2 : 20/09/20 (fusion C2@D2)
N° de Commande en H2 : 100046-200920 (fusion H2:I2)
(j'ai mis « @ » au lieu de « : » pour éviter le smiley auto.)


* une Date de livraison en E2 : 08/10/20 (fusion E2:G2)

Note aussi que sur la ligne 4, il
n'y a plus les petites flèches du filtre
automatique ! tu verras que ma macro s'en passe très bien ! :) alors
c'est inutile de remettre un filtre automatique ! ;)


--------------------------------------------------------------------------------------

Sans refermer le 1er classeur, ouvre "Récapitulatif.xlsm".

Tu peux voir que c'est en bas des deux dernières lignes, et qu'il n'y a rien
sous la 1ère commande du site "BEAULIEU" (t'as trouvé l'Jardin d'Eden ?).

Sans devoir remonter tout en haut pour cliquer sur ton bouton
"Nouvelle commande", fais Ctrl e ➯ tu as bien le résultat voulu
(un clic sur le bouton aurait eu exactement le même effet).

Vérifie bien toutes les données de la plage A62:H91 !

--------------------------------------------------------------------------------------

Comme on est le 02/10/20, tu n'as plus que six jours pour honorer ta
commande du 20/09/20 du site "HUTTOPIA BOZEL EN VANOISE" !

--------------------------------------------------------------------------------------

Fais Ctrl Début ➯ ça remonte tout en haut, en cellule A1

Tu peux voir que j'ai amélioré la présentation de la ligne 1 des en-têtes,
ainsi que la présentation du bouton "Nouvelle commande".

--------------------------------------------------------------------------------------

Plus tard, quand tu voudras ajouter une nouvelle commande, à partir
d'un autre fichier, tu devras fermer "Réassort Bozel hiver 2019.xlsx"
et ouvrir ton autre fichier (peu importe son nom, ma macro saura le
détecter correctement) ; mais ça n'est pas prévu pour marcher avec
plus de 2 classeurs ouverts en même temps : c'est seulement pour
le fichier de la commande + le fichier "Récapitulatif.xlsm"
.

Note aussi que c'est ce classeur "Récapitulatif.xlsm" qui contient
la macro (donc 1 seule fois seulement) ; je veux dire qu'à l'inverse,
il aurait fallu mettre une même macro dans chaque classeur de
commande, ce qui aurait été bien évidemment plus contraignant !
et aussi bien plus encombrant ! (taille de la macro × n fichiers
de commande)


--------------------------------------------------------------------------------------

Comme c'était très compliqué à faire, et que j'ai utilisé, tout comme toi,
l'enregistreur de macro, ça explique que ma macro fait environ 3 800
lignes : tu vas avoir beaucoup de lecture ! :D

Nan, j'plaisante ! :p ma macro fait 31 lignes seulement, et j'espère que
tu ne m'en voudras pas trop pour n'avoir rien gardé de ta belle macro
initiale : j'ai préféré tout refaire à partir de zéro, à ma façon. ;)

Fais Alt F11 pour aller sur Visual Basic, puis pour revenir sur Excel.

--------------------------------------------------------------------------------------

Si tu as besoin d'une adaptation et / ou d'un complément d'infos,
n'hésite pas à demander ; à te lire pour avoir ton avis. :)

--------------------------------------------------------------------------------------

Tu as eu d'la chance : d'habitude j'évite les exos Excel où y'a
plus d'un fichier ! c'est vraiment exceptionnel si j'en fais !

J'dois reconnaître que ton exo était très intéressant à faire,
et qu'il m'a beaucoup plu ; merci d'l'avoir proposé ! :D


soan
 

Pièces jointes

  • Réassort Bozel hiver 2019.xlsx
    725.3 KB · Affichages: 7
  • Récapitulatif.xlsm
    23.5 KB · Affichages: 7

soan

XLDnaute Barbatruc
Inactif
Ajout : j'ai oublié de te remercier pour la petite histoire et les infos de ton post #10. ;)

Si tu fais bien ton job, t'as l'droit d'aller te détendre dans le camping du Directeur ? :p
= vacances gratuites, nourrie et logée, tout ça aux frais d'la princesse ! (ton PDG)

bon, si tu donnes plus d'nouvelles, j'saurai où t'es passée ! :p
(et j'peux y'aller, moi aussi, dans ton joli camping ? :rolleyes:)


soan
 

stella69670

XLDnaute Nouveau
Très cher Soan,
J'ai bien testé, mais j'ai une erreur dès le lancement de la macro, c'est la ligne en jaune dans le débogage qui déconne.
Aurais-tu une explication ?
1601644818896.png

J'ai essayé d'ouvrir un autre classeur commande, mais j'ai également le même problème :(

Pour répondre à tes questions, j'ai en effet le droit d'aller sur site quand je veux et c'est un vrai bonheur. A chacun ses avantages dans les boites.
Tu peux aussi y aller, on a un super site internet :)
N'hésites pas à parler ne privé si tu as des questions ;)

Merci beaucoup pour ton aide
 

Pièces jointes

  • 1601644613420.png
    1601644613420.png
    17 KB · Affichages: 6

soan

XLDnaute Barbatruc
Inactif
Ah oui, j'ai compris :

À part le fichier "Récapitulatif.xlsm", pour l'autre fichier de la commande, j'ai supposé
qu'il pouvait avoir n'importe quel nom : il sera détecté correctement, comme expliqué
dans mon post #12 ; mais aussi, j'ai oublié de le préciser : il est censé avoir une feuille
de nom "DOSSIER RECAP"
; alors si ça a planté, je suppose que c'est pas le cas ! ;)

Mais si cette feuille s'appelle différemment d'un classeur à l'autre, comment veux-tu
qu'on puisse la référencer comme il le faudrait ? dis-moi d'abord si c'est ça ou non ;
si c'est ça, je vais peut-être avoir une solution à te proposer.

-----------------------------------------------------------------------------------------------

Sinon, pour le camping, merci pour la proposition, mais j'en avais parlé qu'en
plaisantant. ;)

soan
 

Discussions similaires

Réponses
13
Affichages
654
Réponses
21
Affichages
916