Simplifier un code VBA
Nastia88
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche une solution pour simplifier mon code VBA (je suis novice en la matière). Vous trouverez un bout de mon code ci dessous qui se repete de la même manière. Les lignes soulignés c'est ce qui se repete à chaque copier coller (le classeur et la feuille ou je copie les info) et ce qui est en italique c'est la répetition de la même action copier/coller mais pas le mêmes données.
Deplus j'ai également une autre problématique par rapport au copier coller des plages de cellules qui peuvent subir des modifications. J'aimairais savoir comment rendre ces plages de cellules "mobiles" aux variations (par exemple supression d'une ligne ou rajout de colonne).
Merci par avance d'un coup de main.
Sub creationsynthese()
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
'Nom officiel -> On copie la cellule B6 du classeur BDD_mjc_damidot.xlsm dans la cellule B3 de le feuille NS du classeur Fiche_SyntheseV1
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B3").Select
ActiveSheet.Paste
'Detail de l'activite -> On copie la cellule B11 du classeur BDD_mjc_damidot.xlsm dans la cellule B4 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B4:H4").Select
ActiveSheet.Paste
'Elus membres du CA -> On copie la cellule B33 du classeur BDD_mjc_damidot.xlsm dans la cellule B5 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B33").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B5:H5").Select
ActiveSheet.Paste
'Elus representants de la ville dans le CA -> On copie la cellule B34 du classeur BDD_mjc_damidot.xlsm dans la cellule B6 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B34").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B6:H6").Select
ActiveSheet.Paste
'Dernier exercice suivi -> On copie la cellule B35 du classeur BDD_mjc_damidot.xlsm dans la cellule B7 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B35").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B7:C7").Select
ActiveSheet.Paste
'Date de clôture -> On copie la cellule B37 du classeur BDD_mjc_damidot.xlsm dans la cellule E7 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B37").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("e7:f7").Select
ActiveSheet.Paste
Je cherche une solution pour simplifier mon code VBA (je suis novice en la matière). Vous trouverez un bout de mon code ci dessous qui se repete de la même manière. Les lignes soulignés c'est ce qui se repete à chaque copier coller (le classeur et la feuille ou je copie les info) et ce qui est en italique c'est la répetition de la même action copier/coller mais pas le mêmes données.
Deplus j'ai également une autre problématique par rapport au copier coller des plages de cellules qui peuvent subir des modifications. J'aimairais savoir comment rendre ces plages de cellules "mobiles" aux variations (par exemple supression d'une ligne ou rajout de colonne).
Merci par avance d'un coup de main.
Sub creationsynthese()
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
'Nom officiel -> On copie la cellule B6 du classeur BDD_mjc_damidot.xlsm dans la cellule B3 de le feuille NS du classeur Fiche_SyntheseV1
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B3").Select
ActiveSheet.Paste
'Detail de l'activite -> On copie la cellule B11 du classeur BDD_mjc_damidot.xlsm dans la cellule B4 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B11").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B4:H4").Select
ActiveSheet.Paste
'Elus membres du CA -> On copie la cellule B33 du classeur BDD_mjc_damidot.xlsm dans la cellule B5 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B33").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B5:H5").Select
ActiveSheet.Paste
'Elus representants de la ville dans le CA -> On copie la cellule B34 du classeur BDD_mjc_damidot.xlsm dans la cellule B6 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B34").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B6:H6").Select
ActiveSheet.Paste
'Dernier exercice suivi -> On copie la cellule B35 du classeur BDD_mjc_damidot.xlsm dans la cellule B7 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B35").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("B7:C7").Select
ActiveSheet.Paste
'Date de clôture -> On copie la cellule B37 du classeur BDD_mjc_damidot.xlsm dans la cellule E7 de le feuille NS du classeur Fiche_SyntheseV1
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
Range("B37").Select
Application.CutCopyMode = False
Selection.Copy
Windows("fichesynthese.xlsm").Activate
Range("e7:f7").Select
ActiveSheet.Paste
A voir également:
- Simplifier un code VBA
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
15 réponses
Bonjour,
Deux facons de faire (a tester):
'Voir pour le nom du fichier synthese et le nom de la feuille
A+
Deux facons de faire (a tester):
Sub creationsynthese_1()
Dim TCopie(5)
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
'Nom officiel -> On copie la cellule B6 du classeur BDD_mjc_damidot.xlsm dans la cellule B3 de le feuille NS du classeur Fiche_SyntheseV1
'mise en memoire des infos
TCopie(0) = Range("B6").Select '1
TCopie(1) = Range("B11").Select '2
TCopie(2) = Range("B33").Select '3
TCopie(3) = Range("B34").Select '4
TCopie(4) = Range("B35").Select '5
TCopie(5) = Range("B37").Select '6
'fermeture du classeur BDD
Workbooks("BDD_mjc_damidot.xlsm").Close False
'recuperation des infos
Range("B3") = TCopie(0)
Range("B4") = TCopie(1)
Range("B5") = TCopie(2)
Range("B6") = TCopie(3)
Range("B7") = TCopie(4)
Range("E7") = TCopie(5)
End Sub
'Voir pour le nom du fichier synthese et le nom de la feuille
Sub creationsynthese_2()
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
With Sheets("Identification")
.Range("B6").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("B3")
.Range("B11").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("B4")
.Range("B33").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("B5")
.Range("B34").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("B6")
.Range("B35").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("B7")
.Range("B37").Copy Workbooks("fichesynthese.xlsm").Sheets("feuil1").Range("E7")
End With
End Sub
A+
Merci de votre réponse.
Consernant la premiere solution qui m'arrange le plus car le nom du fichier "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm" est une donnée variable c'est à dire que je vais devoir ouvrir un autre fichier qui a la même forme mais des données differentes et faire les mêmes copier/coller.
Par contre lorsque j'execute la solution n°1 il ne fait pas le copier coller mais indique vrai dans les cellules "B3";"B4";"B5";"B6";"B7";"E7".
Je sais pas trop comment resoudre ce souci.
Consernant la premiere solution qui m'arrange le plus car le nom du fichier "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm" est une donnée variable c'est à dire que je vais devoir ouvrir un autre fichier qui a la même forme mais des données differentes et faire les mêmes copier/coller.
Par contre lorsque j'execute la solution n°1 il ne fait pas le copier coller mais indique vrai dans les cellules "B3";"B4";"B5";"B6";"B7";"E7".
Je sais pas trop comment resoudre ce souci.
Bonjour,
ai oublie d'en enlever
remplacez ces lignes
'mise en memoire des infos
TCopie(0) = Range("B6").Select '1
TCopie(1) = Range("B11").Select '2
TCopie(2) = Range("B33").Select '3
TCopie(3) = Range("B34").Select '4
TCopie(4) = Range("B35").Select '5
TCopie(5) = Range("B37").Select '6
par
'mise en memoire des infos
TCopie(0) = Range("B6") '1
TCopie(1) = Range("B11") '2
TCopie(2) = Range("B33") '3
TCopie(3) = Range("B34") '4
TCopie(4) = Range("B35") '5
TCopie(5) = Range("B37") '6
ai oublie d'en enlever
remplacez ces lignes
'mise en memoire des infos
TCopie(0) = Range("B6").Select '1
TCopie(1) = Range("B11").Select '2
TCopie(2) = Range("B33").Select '3
TCopie(3) = Range("B34").Select '4
TCopie(4) = Range("B35").Select '5
TCopie(5) = Range("B37").Select '6
par
'mise en memoire des infos
TCopie(0) = Range("B6") '1
TCopie(1) = Range("B11") '2
TCopie(2) = Range("B33") '3
TCopie(3) = Range("B34") '4
TCopie(4) = Range("B35") '5
TCopie(5) = Range("B37") '6
Alors ça marche parfaitement sauf quand j'ajoute les nom de plage de cellules par exemple :
Sub creationsynthese_1()
Dim TCopie(5)
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
'Nom officiel -> On copie la cellule B6 du classeur BDD_mjc_damidot.xlsm dans la cellule B3 de le feuille NS du classeur Fiche_SyntheseV1
'mise en memoire des infos
TCopie(0) = Range("B6") '1
TCopie(1) = Range("B11") '2
TCopie(2) = Range("B33") '3
TCopie(3) = Range("B34") '4
TCopie(4) = Range("B35") '5
TCopie(5) = Range("B37") '6
TCopie(6) = Range("EFFECTIF_MOYEN") '7
TCopie(7) = Range("EFFECTIF_Mis_à_Disposition_par_ville") '8
TCopie(8) = Range("Apports_ville") '9
'fermeture du classeur BDD
Workbooks("BDD_mjc_damidot.xlsm").Close False
'recuperation des infos
Range("B3") = TCopie(0)
Range("B4") = TCopie(1)
Range("B5") = TCopie(2)
Range("B6") = TCopie(3)
Range("B7") = TCopie(4)
Range("E7") = TCopie(5)
Range("A13") = TCopie(6)
Range("A32") = TCopie(7)
Range("A45") = TCopie(8)
End Sub
Cela me pose un probleme si je ne peux pas utiliser ces nom de plage car mon tableau par exemple EFFECTIF_MOYEN peut subir des modification.
Sub creationsynthese_1()
Dim TCopie(5)
'On ouvre le classeur BDD_mjc_damidot.xlsm
Workbooks.Open "Q:\ACTIVITES\GESTION EXTERNE\Outil de suivi\Diag 2012\BDD_mjc_damidot.xlsm"
'On selectionne la feuille Identification
Sheets("Identification").Select
'Nom officiel -> On copie la cellule B6 du classeur BDD_mjc_damidot.xlsm dans la cellule B3 de le feuille NS du classeur Fiche_SyntheseV1
'mise en memoire des infos
TCopie(0) = Range("B6") '1
TCopie(1) = Range("B11") '2
TCopie(2) = Range("B33") '3
TCopie(3) = Range("B34") '4
TCopie(4) = Range("B35") '5
TCopie(5) = Range("B37") '6
TCopie(6) = Range("EFFECTIF_MOYEN") '7
TCopie(7) = Range("EFFECTIF_Mis_à_Disposition_par_ville") '8
TCopie(8) = Range("Apports_ville") '9
'fermeture du classeur BDD
Workbooks("BDD_mjc_damidot.xlsm").Close False
'recuperation des infos
Range("B3") = TCopie(0)
Range("B4") = TCopie(1)
Range("B5") = TCopie(2)
Range("B6") = TCopie(3)
Range("B7") = TCopie(4)
Range("E7") = TCopie(5)
Range("A13") = TCopie(6)
Range("A32") = TCopie(7)
Range("A45") = TCopie(8)
End Sub
Cela me pose un probleme si je ne peux pas utiliser ces nom de plage car mon tableau par exemple EFFECTIF_MOYEN peut subir des modification.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
il faut modifier la declaration de la variable TCopie(5) en TCopie(8)
EFFECTIF_MOYEN peut subir des modification Vois pas le rapport !!!!!
il faut modifier la declaration de la variable TCopie(5) en TCopie(8)
EFFECTIF_MOYEN peut subir des modification Vois pas le rapport !!!!!
Merci encore, je viens de faire la modification pour la declaration de la variable ça beug apartir de la ligne
TCopie(6) = Range("EFFECTIF_MOYEN") '7
TCopie(6) = Range("EFFECTIF_MOYEN") '7
Re,
variable ça beug Veut rien dire, quel message d'erreur ?????
EFFECTIF_MOYEN est bien un nom de cellule ????
variable ça beug Veut rien dire, quel message d'erreur ?????
TCopie(6) = Range("EFFECTIF_MOYEN") '7
EFFECTIF_MOYEN est bien un nom de cellule ????
Le message d'erreur est le suivant : Erreur d'execution '1004' : La méthode 'Range' de l'objet '_Global' à echoué
Et le debogage commence à partir de la ligne : TCopie(6) = Range("EFFECTIF_MOYEN") '7
Voilà
Et le debogage commence à partir de la ligne : TCopie(6) = Range("EFFECTIF_MOYEN") '7
Voilà
Si j'ai bien compris la question, j'aimerai coller dans ma feuille de synthese les tableaux :
EFFECTIF_MOYEN dans la cellule A13
EFFECTIF_Mis_à_Disposition_par_ville dans la cellule A32
Apports_ville dans la cellule A45
EFFECTIF_MOYEN dans la cellule A13
EFFECTIF_Mis_à_Disposition_par_ville dans la cellule A32
Apports_ville dans la cellule A45
Re,
EFFECTIF_MOYEN dans la cellule A13 tout un tableau dans une cellule !!
Le tableau EFFECTIF_MOYEN contient quoi ???
EFFECTIF_MOYEN dans la cellule A13 tout un tableau dans une cellule !!
Le tableau EFFECTIF_MOYEN contient quoi ???