[Catégorie modifiée VB6 -> VBA] Automatisation d'une macro Excel
gribouts
Messages postés7Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention 8 juin 2011
-
7 juin 2011 à 23:03
gribouts
Messages postés7Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention 8 juin 2011
-
8 juin 2011 à 20:47
Bonjour à tous,
j'aimerais faire une macro qui copie collerait le contenu d'une cellule (AF1) dans les cases g1, g2, g3, g4 ainsi que M4, S2, S3 et Z2, Z3. Elle irait ensuite en AF5 et collerait le texte présent en AF5 dans les cellules g5, g6, g7, g8, m8, s6, s7 et z6, z7 puis irait 4 lignes en dessous (soit en AF9) et ferait ces copies-colles jusqu'a la fin du tableau. Ne sachant pas faire ceci, j'ai commence la macro en manuel pour avoir le code en VB (me disant que ceci pourrait vous éviter d'écrire le code). Vous trouverez ce que j'ai obtenu ci-dessous, merci infiniment pour toute aide ou commentaire.
Cordialement, Grib.
jordane45
Messages postés38167Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 7 mai 2024344 8 juin 2011 à 11:53
Bonjour,
Si tu ne souhaites que recopier le contenu d'une cellule dans une autre (ou plusieurs), tu n'es pas obligé de passer par du copier coller.
Tu peux directement lire ET écrire des valeurs dans les cellules :
exemple:
Sub toto()
'Récupérer le contenu d'une cellule dans une variable
Valeur_cel = Range("AF1").Value
' Ecrire la valeur dans les cellules
Range("G1").Value = Valeur_cel
Range("G2").Value = Valeur_cel
Range("G3").Value = Valeur_cel
Range("G4").Value = Valeur_cel
End Sub
Par contre, si tu veux passer par du copier/coller (pour récuperer le contenu + la mise en forme...), ta méthode n'est pas mal.
Tu peux, toutesfois, enlever les lignes de codes :
gribouts
Messages postés7Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention 8 juin 2011 8 juin 2011 à 15:21
Bonjour,
tout d'abord merci pour ta réponse, c'est vraiment gentil.
Le problème que je rencontre maintenant est comment faire pour automatiser ce processus jusqu'a la fin de la bdd. En effet, ici, la macro ne va coller les valeurs que de AF1 dans les cellules G1 à G4, S2, S3 et Z2, Z3 puis idem pour AF5 et les cellules ci-dessus décalées 4 lignes plus bas. J'aimerais savoir comment écrire dans la macro le fait que ces copie-colles vont devoir être fait toutes les 4 lignes, jusqu'a la fin de la bdd, soit pour AF1, AF5, AF9, AF13.... AF93...AF186.. qui seront colles dans les cases ci-dessus (G.. Z et S..) au lieu de devoir manuellement spécifier les cellules considérées dans la macro. Je pense que ceci serait possible à l'aide des valeurs relatives mais je ne parviens pas à trouver comment faire.. Aurais-tu une idée pour ce faire ??
gribouts
Messages postés7Date d'inscriptionvendredi 21 avril 2006StatutMembreDernière intervention 8 juin 2011 8 juin 2011 à 20:47
ok bonne idée. Vu que j'ai un saut de 4 lignes, je pense qu'il faut utiliser les steps et donc ajouter quelque chose comme:
Dim x As Integer
For x = 4 To .. Step 4
Cells(x, 32) = & x
Next x
Le problème reste que, si avec ce moyen je peux effectivement passer de AF1 à AF4 et ainsi de suite, je ne trouve pas comment lui dire de coller la valeur de la cellule de départ dans le lot de cellule défini (g1...) et de mettre la nouvelle valeur (af5 par ex) dans le meme lot de cellule 4 lignes plus bas...