Recopier x cellule dans une colonne

Résolu
mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
    2. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44
       
      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
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      Le code marche, c'est un exemple. Il faut l'adapter à votre contexte. À défaut, mettez un fichier à dispo
      0
    4. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44
       
      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
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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.

    0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
    2. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44
       
      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
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
    4. mchotard Messages postés 474 Date d'inscription   Statut Membre Dernière intervention   44
       
      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