Taches répétitives

Henriett

XLDnaute Occasionnel
Bonjour,

J' ai un petit-grand problème avec excel.
En effet, j' ai des dizaines de fichiers excel dans lesquels je dois toujours effectuer les même taches.
J' aimerais savoir s' il existe un moyen pour que quand, par exemple je sélectionne une plage de cellules (A1 B7 dans la feuil3)dans un fichier(ou classeur) ,"témoin" ou premier, eh bien dans tous les autres fichiers excel que j' aurais choisis, cet même selection se fera (A1 B7 dans la feuil3). Et si je veux copier cette même plage et la coller dans la feuil6 par exemple, eh bien chaque fichier prendra chacun sa plage de cellules(A1 B7 dans la feuil3) pour la coller dans sa propre feuil6.
Enfin bref, c' est juste pour savoir s' il existe un genre de programmation ou de quelque chose à faire dans excel pour que ça marche.

J' espère que quelqu' un me comprendra.:)

Cordialement,
 

Henriett

XLDnaute Occasionnel
Re : Taches répétitives

Bonjour,

Comme tu le dis si bien, c' est surement la fatigue car il n' y a vraiment rien à comprendre.
Ce que je décris c' est ce que j' aimerais pouvoir faire mais peut-être que je peux pas. La seule chose que je veux c' est éviter de répéter les même manipulation sur des dizaines et dizaines de classeur excel.

Sinon, je te remercie d' avoir essayer de m' aider.:)

Au début tu m' a parlé de VBA... ?

Cordialement,
 

kjin

XLDnaute Barbatruc
Re : Taches répétitives

Bonjour,
A la première lecture, je comprends qu'il faudrait enregistrer toutes les manips sur un fichier et les reproduire sur des dizaines de fichiers, peut-être pas en temps réel mais bon...:eek:
Le truc c' est que je sélectionne et manipule toujours les même coordonnées de cellules
A voir, avec cette précision supplémentaire, mais il faudrait être plus explicite
A+
kjin
 

JNP

XLDnaute Barbatruc
Re : Taches répétitives

Bonjour le fil :),
Je comprends que Michel ait craqué :p.
Au risque de dire une grosse connerie (ça nous parait tellement évident que c'est peut-être la solution :D...) :
1) Dans le menu "Fichier", tu sélectionnes "Options"
2) Dans l'onglet "Ruban personalisé", dans la partie droite, tu coches l'onglet "Développeur"
3) Tu ouvres ton "fichier1"
4) Tu vas sur l'onglet "Développeur"
5) Tu clicques sur "Enregistrer une macro"
6) Touche de raccourci, tu saisis Maj+m (M en majuscule), par exemple
6) Dans le menu déroulant, tu choisis Enregistrer la macro dans "Classeur de macros personnelles"
7) Tu clicques "OK"
8) Tu fais toutes les manips qui seront similaires
9) Tu appuies sur le petit carré bleu "Arrêter l'enregistrement"
10) Tu ouvres "fichier2"
11) Tu fais Ctrl+Maj+m
12) Et tu regardes le résultat ;).
A savoir qu'il faut que ce soit des manipulations rigoureusement identique, et que souvent, il faut reprendre le code pour qu'il s'adapte à tous les fichiers.
ATTENTION : travaille bien sur des copies, car le Ctrl+z ne fonctionne pas sur les macros :eek:.
Bon courage :cool:
Ajout : Salut Kjin :)
 

JNP

XLDnaute Barbatruc
Re : Taches répétitives

Re :),
Ca marche sauf que la macro prend seulement en charge les copies, n' est-ce pas ? parce que j' ai fais une incrémentation dans mon fichier 1 mais dans le fichier 2 la macro ne l' a pas faite...
La macro prends quasiment tout en charge. Cela viens plutôt de ta méthode d'incrémentation. Si tu fais Alt + F11, tu pourras aller voir le code qui s'est créé automatiquement, et comme je le disais, l'adapter. Dans ton exemple1, tu avais des chiffres qui s'incrémentes en série, dans ton exemple 2, tu avais des lettres, qu'il est beaucoup moins évident d'incrémenter par un glisser...
Après, il faudrait voir le code généré, mais c'est valable d'adapter les macros si tes 10 fichiers, tu les traites tous les mois... Si c'est juste pour une fois, est-ce que ça vaut la peine de passer beaucoup de temps à modifier le code :rolleyes: ?
Si c'est le cas, reviens vers nous avec le code généré et 2 exemples concrets (sans données confidentielles).
Bon courage :cool:
 

Henriett

XLDnaute Occasionnel
Re : Taches répétitives

Bonjour,

Merci encore JNP et tous ceux qui ont essayé de m' aider.

J' ai des fichiers excel où je dois copier des données et je dois parfois attendre que le processeur fasse le calcul (tout dépend de la taille du fichier, ça peut aller de 1 à 3-4 secondes).

Je me demande donc si la macro va faire des erreurs en copiant ces données car je ne crois pas qu'elle attende que le processeur fasse le calcul... ?

Bonne journée,

Cordialement,
 

JNP

XLDnaute Barbatruc
Re : Taches répétitives

Re :),
J' ai des fichiers excel où je dois copier des données et je dois parfois attendre que le processeur fasse le calcul (tout dépend de la taille du fichier, ça peut aller de 1 à 3-4 secondes).
Je me demande donc si la macro va faire des erreurs en copiant ces données car je ne crois pas qu'elle attende que le processeur fasse le calcul... ?
Bonne question. Seuls des tests pourront donner la réponse ;)...
Tout va dépendre du type de calcul en cours. Si ta copie de donnée est une copie spéciale pour récupérer les valeurs que tu viens juste de déclencher par glisser vers le bas, oui, tu vas certainement obtenir des résultats pas encore calculés :eek:...
Si c'est les formules que tu récupères, elles, elles continueront à se calculer après la copie :)...
Pour chaque problème, il y a (presque toujours :D...) une solution, en corrigeant le code. Demander le calcul de la feuille, mettre une pause, etc.
Ça t'explique aussi le début très cahotique de ce post, chacun réfléchissant au code à te proposer, sans effleurer le fait que l'utilisation que tu souhaitais, c'étais celle de l'enregistrement de séquences de base ;).
En conclusion, bienvenue dans le monde merveilleux de VBA :p. Les macros enregistrées en automatique ne sont qu'un début, il va falloir retrousser tes manches, mais ne t'inquiètes pas, le forum est là pour t'aider ;) !
Commence par aller dans l'éditeur VBA (Alt + F11). Si tu n'as pas une arborescence à gauche, Ctrl + r. Là, tu as ton fichier Personal.xlsb avec un + devant. Si tu descends dans l'arborescence, tu auras un dossier Modules, avec Module1 (et plus si tu as enregistré un certain nombre de macros).
En cliquant sur le module, tu récupères une fenêtre comprenant les macros enregistrées type
VB:
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1:E25").Select
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("A1:M25"), Type:=xlFillDefault
Range("A1:M25").Select
Sheets("Feuil1").Select
End Sub
Il te suffit de la copier dans le post de ta question (en n'oubliant pas de mettre la balise CODE en appuyant sur le # dans la barre d'outil des posts) pour qu'on puisse lire le code généré et t'aider à l'améliorer/corriger :eek:.
Au plaisir de te lire :cool:
 
Dernière édition:

Henriett

XLDnaute Occasionnel
Re : Taches répétitives

Code:
Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+Shift+C
'
    Range("K4:M9").Select
    Range("K9").Activate
    Selection.Copy
    Sheets("Feuil2").Select
    Range("K10").Select
    ActiveSheet.Paste
End Sub
Sub Macro2()
'
' Macro2 Macro
'
' Touche de raccourci du clavier: Ctrl+m
'
    Sheets("Feuil2").Select
    Selection.Copy
    Sheets("Feuil3").Select
    Range("AF2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil4").Select
    ActiveWindow.ScrollRow = 64934
    ActiveWindow.ScrollRow = 64724
    ActiveWindow.ScrollRow = 64514
    ActiveWindow.ScrollRow = 64304
    ActiveWindow.ScrollRow = 63253
    ActiveWindow.ScrollRow = 60731
    ActiveWindow.ScrollRow = 59471
    ActiveWindow.ScrollRow = 56529
    ActiveWindow.ScrollRow = 54217
    ActiveWindow.ScrollRow = 49804
    ActiveWindow.ScrollRow = 41189
    ActiveWindow.ScrollRow = 39928
    ActiveWindow.ScrollRow = 36566
    ActiveWindow.ScrollRow = 28791
    ActiveWindow.ScrollRow = 23747
    ActiveWindow.ScrollRow = 19545
    ActiveWindow.ScrollRow = 15552
    ActiveWindow.ScrollRow = 2
    Range("AE21").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=18
    Sheets("Feuil5").Select
    ActiveWindow.SmallScroll Down:=20
    Range("AE32").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil3").Select
    Columns("B:AF").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("AF1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "31"
    Columns("B:AF").Select
    Range("AF1").Activate
    Selection.Copy
    Range("AK1").Select
    ActiveSheet.Paste
    Sheets("Feuil2").Select
    ActiveSheet.Shapes.Range(Array("Text Box 1")).Select
    Application.CutCopyMode = False
    Sheets("Feuil3").Select
    Range("AK2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-35]=""X"",RC[1]+1,0)"
    Range("AK2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-35]=""X"",RC[-1]+1,0)"
    Range("AK2").Select
    Selection.AutoFill Destination:=Range("AK2:BO2"), Type:=xlFillDefault
    Range("AK2:BO2").Select
    Selection.AutoFill Destination:=Range("AK2:BO100001"), Type:=xlFillDefault
    Range("AK2:BO100001").Select
    Selection.Copy
    Sheets("Feuil4").Select
    Columns("A:AE").Select
    Range("AE1").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Range("AJ1").Select
    ActiveSheet.Paste
    Sheets("Feuil5").Select
    Columns("A:AE").Select
    Range("AE1").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Range("AJ1").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=-20
    Sheets("Feuil4").Select
    ActiveWindow.SmallScroll Down:=-18
    Sheets("Feuil3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil2").Select
    Application.CutCopyMode = False
    Sheets("Feuil4").Select
    Range("AJ2").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-35]=""X"",RC[-1]+1,0)"
    Range("AJ2").Select
    Selection.AutoFill Destination:=Range("AJ2:BN2"), Type:=xlFillDefault
    Range("AJ2:BN2").Select
    Selection.AutoFill Destination:=Range("AJ2:BN100047"), Type:=xlFillDefault
    Range("AJ2:BN100047").Select
    Selection.Copy
    ActiveWindow.ScrollRow = 99818
    ActiveWindow.ScrollRow = 94354
    ActiveWindow.ScrollRow = 82376
    ActiveWindow.ScrollRow = 67457
    ActiveWindow.ScrollRow = 54218
    ActiveWindow.ScrollRow = 48754
    ActiveWindow.ScrollRow = 44551
    ActiveWindow.ScrollRow = 43711
    ActiveWindow.ScrollRow = 43501
    ActiveWindow.ScrollRow = 41189
    ActiveWindow.ScrollRow = 26059
    ActiveWindow.ScrollRow = 7567
    ActiveWindow.ScrollRow = 2
    Sheets("Feuil5").Select
    Range("AJ2").Select
    ActiveSheet.Paste
    Sheets("Feuil4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil5").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil2").Select
    ActiveSheet.Shapes.Range(Array("Zone de texte 1")).Select
End Sub
 

JNP

XLDnaute Barbatruc
Re : Taches répétitives

Re :),
Techniquement ta 1ère macro pourrait être
Code:
Sub Macro1bis()
Sheets("Feuil1").Range("K4:M9").Copy Sheets("Feuil2").Range("K10")
End Sub
et la 2ème
Code:
Sub Macro2bis()
    Sheets("Feuil2").Range("K4:M9").Copy
    Sheets("Feuil3").Range("AF2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil4").Range("AE21").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil5").Range("AE32").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil3").Select
    Range("AF1").FormulaR1C1 = "31"
    Columns("B:AF").Copy Range("AK1")
    Sheets("Feuil3").Range("AK2").FormulaR1C1 = "=IF(RC[-35]=""X"",RC[1]+1,0)"
    Range("AK2").FormulaR1C1 = "=IF(RC[-35]=""X"",RC[-1]+1,0)"
    Range("AK2").AutoFill Destination:=Range("AK2:BO2"), Type:=xlFillDefault
    Range("AK2:BO2").AutoFill Destination:=Range("AK2:BO100001"), Type:=xlFillDefault
    Columns("A:AE").Copy Range("AJ1")
    Sheets("Feuil5").Select
    Columns("A:AE").Copy Range("AJ1")
    Sheets("Feuil3").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil4").Range("AJ2").FormulaR1C1 = "=IF(RC[-35]=""X"",RC[-1]+1,0)"
    Range("AJ2").AutoFill Destination:=Range("AJ2:BN2"), Type:=xlFillDefault
    Range("AJ2:BN2").AutoFill Destination:=Range("AJ2:BN100047"), Type:=xlFillDefault
    Range("AJ2:BN100047").Copy Sheets("Feuil5").Range("AJ2")
    Sheets("Feuil4").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil5").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Feuil2").Select
    ActiveSheet.Shapes.Range(Array("Zone de texte 1")).Select
End Sub
Maintenant, t'expliquer le comment...
Bon courage ;)
Bonne nuit :cool:
 

Henriett

XLDnaute Occasionnel
Re : Taches répétitives

Bonjour,

Merci JNP.
Alors voilà ce que j' ai fais : j' ai copié la macro2bis dans le module 1 qui est dans modules qui est dans personal.xlsb et quand je fais éxécuter la macro, vba me dit :

Erreur d' exécution '1004'.
La méthode Select de la classe Range a échoué.

Fin _ Débogage

Quand je sélectionne Débogage, il me surligne en jaune la 3eme ligne du code.

Cordialement,
 
Dernière édition:

Discussions similaires

Réponses
24
Affichages
1 K