Recopier x cellule dans une colonne

Résolu/Fermé
mchotard
Messages postés
321
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
4 avril 2022
- 30 janv. 2018 à 15:07
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
- 3 févr. 2018 à 09:16
Bonjour
J'au crée une 1ère macro pour venir sélectionner la dernière cellule vide d'une colonne "D" à partir de la cellule "D3" et ça marche

Sub SelectionCelVide()
Sheets("Fichier général").Select
Range("D3").End(xlDown).Offset(1, 0).Select
End Sub
Ensuite j'ai une autre macro qui viens copier un nom dans cette cellule. Ca marche bien également
Mon souci c'est la suite : je voudrais que ce nom soit recopier vers le bas 12 fois correspondant au 12 mois de l'année.
dans une colonne "B" j'ai bien les numéro de chaque mois à savoir 1,2,3 ...jusquà 12.
Cette macro me rendrait bien service.
En espérant avoir été suffisamment clair ^pour que vous puissiez m'aider.
Grand merci

3 réponses

Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
55
Modifié le 30 janv. 2018 à 16:37
Bonjour,

Mets ce nom dans une variable de type String.

Fais une boucle qui va remplir de cette cellule jusqu'à la 12ème plus bas.

Petit exemple de code, faute de mieux :

Sub code()

Dim Nom As String

For i = LaLigneDeLaPremiereCelluleDeCopie To LaLigneDeLaPremiereCelluleDeCopie + 11

    Range("C" & i).Value = Nom 'C à remplacer par la colonne
    
Next i


End Sub


Cordialement.
0
f894009
Messages postés
16486
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2022
1 633
30 janv. 2018 à 16:49
Bonjour a vous deux

sans boucle:
A adapter avec vos variables ligne et colonne
Sub recopie()
    Worksheets("feuil1").Range(Cells(9, 11), Cells(9, 11).Offset(12, 0)) = "azerty"
End Sub


Pourquoi deux macros ??
0
mchotard
Messages postés
321
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
4 avril 2022
35
31 janv. 2018 à 17:13
Désolé, mais la macro de f894009 ne fonctionne pas, il recopie la dernière cellule qu'une seule fois.
Merci tout de même pour le dérangement
0
f894009
Messages postés
16486
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2022
1 633
31 janv. 2018 à 21:32
Bonjour,
Le code marche, c'est un exemple. Il faut l'adapter à votre contexte. À défaut, mettez un fichier à dispo
0
mchotard
Messages postés
321
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
4 avril 2022
35
1 févr. 2018 à 18:55
Bonsoir Kuartz
Je suis désolé, mais je n'arrive toujours pas à recopier ma dernière cellule. Je commets surement une erreur dans la macro que je te livre ci-dessous
Sub Recopie() 'pour recopier une cellule 12 fois vers le bas
Sheets("Fichier général").Select
Range("c3").End(xlDown).Select

Dim Nom As String

For i = LaLigneDeLaPremiereCelluleDeCopie To LaLigneDeLaPremiereCelluleDeCopie + 11

Range("C" & i).Value = Nom 'C à remplacer par la colonne

Next i
Voici le résultat que j'obtiens
Col"C" Col"D"
Roy Hubert
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Fichier général
Je peux t'envoyer un fichier si tu le veux, mais je ne connais pas la procédure.
Merci de ton soutien précieux.
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
Modifié le 30 janv. 2018 à 16:49
Bonjour,

L'opération "Sélectionner" est destinée à un usage manuel de l'utilisateur, en VBA c'est très fortement déconseillé car jamais utile durant la macro, sauf, parfois seulement, à la fin pour restituer la main à l'utilisateur.

Cordialement
Patrice
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
1 févr. 2018 à 21:21
Bonjour,

NE PAS UTILISER SELECT !!!!

Par exemple :
Option Explicit
Sub Recopie()
Dim c As Range
Dim i As Integer
  Set c = Worksheets("Fichier général").Range("C3").End(xlDown)
  For i = 1 To 12
    Set c = c.Offset(1)
    c.Value = c.Offset(-1).Value
  Next i
  c.Activate  'Si besoin
End Sub


0
f894009
Messages postés
16486
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2022
1 633
2 févr. 2018 à 07:11
Bonjour tout le monde,

un fichier avec le code que j'ai propose: https://mon-partage.fr/f/EnIpwOg6/
ici le nombre de cellule est fixe, mais ca marche
0
mchotard
Messages postés
321
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
4 avril 2022
35
2 févr. 2018 à 10:34
merci Patrice33470, ta macro marche super bien. Si je n'abuse pas, pourrais tu l'adapter pour que je puisse recopier 12 fois un nombre fixe de colonne. A savoir au lieu de recopier uniquement la colonne C, je voudrais pouvoir recopier de la colonne "C" à la colonne "O" et toujours 12 fois.
Sans quoi, dois je remplacer tous les "c" de la macro par D et ainsi de suite. Je suis sur que tu as une autre proposition à me faire.
Je te remercie très sincèrement et cordialement
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
2 févr. 2018 à 14:30
Bonjour,

Pour copier les valeurs des colonnes C à O :
Option Explicit
Sub Recopie()
Dim c As Range
Dim i As Integer
  Set c = Worksheets("Fichier général").Range("C3").End(xlDown)
  For i = 1 To 12
    Set c = c.Offset(1)
    c.Resize(1, 13).Value = c.Resize(1, 13).Offset(-1).Value
  Next i
  c.Activate  'Si besoin
End Sub

Et si il y a des formules (à tirer) :
Option Explicit
Sub Recopie()
Dim c As Range
Dim i As Integer
Dim j As Integer
  Set c = Worksheets("Fichier général").Range("C3").End(xlDown)
  For i = 1 To 12
    Set c = c.Offset(1)
    For j = 0 To 12
      c.Offset(0, j).FormulaR1C1 = c.Offset(0, j).Offset(-1).FormulaR1C1
    Next j
  Next i
  c.Activate  'Si besoin
End Sub

0
mchotard
Messages postés
321
Date d'inscription
vendredi 6 mai 2011
Statut
Membre
Dernière intervention
4 avril 2022
35
3 févr. 2018 à 07:21
Un super grand merci Patrice33740, tu as répondu complètement à ma demande. Et je considère donc mon problème comme résolu. Merci à tous ceux qui ont pris du temps pour d'aider.
Bon WE à tous et à bientôt peut-être, enfin le moins possible pour ne pas toujours vous déranger. D'ailleurs je viens d'acheter VBA pour les nuls afin de me perfectionner un plus.
CDLT
0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
1 750
3 févr. 2018 à 09:16
Bonjour

Je te conseille vivement ce cours pour débutants, gratuit et très complet :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

Cordialement
Patrice
0