[MACRO] Copie de données dans onglet cible

Résolu
Bonjour,

Etant totalement novice en macro et VBA et la méthode d'enregistrement pas à pas ne me permettant pas d'atteindre mon objectif je m'en retourne vers vous.

Mon fichier:
Un onglet "Pivot central" comprenant 1 colonne de données (C5:C36) à copier dans un onglet cible.
Dans cet onglet sont présents 2 critères qui doivent déterminer l'emplacement de copie des données au sein du classeur:
- Une cellule B4 contenant NOM PRENOM qui determine l'onglet de copie. Les onglets du fichiers étant nommés selon les différentes valeurs du NOM PRENOM
- Une cellule C4 contenant MOIS ANNEE determinant l'emplacement de copie au sein de l'onglet voulu, la cellule MOIS ANNEE réapparaissant dans chaque onglet sur la ligne 10.

De plus les données devront se copier via collage spécial "Valeur et mise en forme".

Merci d'avance pour votre aide

7 réponses

  1. Bonjour,

    Serait possible d'avoir un fichier exemple (sans données personnelles) ne serait ce que pour la mise en forme.

    Vous pouvez générer un lien via le site https://www.cjoint.com/ que vous copiez ensuite sur votre message.
    0
    1. Voici une version retoquée du document :
      https://www.cjoint.com/?0HwpPPPUBbx

      Il faut donc que la plage de données C5:D36 de l'onglet Pivot Central aille se copier dans l'onglet correspondant à la cellule B4 et dans la colonne correspondant à la cellule C4 de l'onglet Pivot central.
      La copie doit se faire en collage spécial : Valeurs avec mise en forme source.

      Merci d'avance
      0
      1. Je vais essayer de définir le squelette de la macro si jamais un adepte du VBA passait par là:

        Copier 'Pivot Central'!C4:C36
        Coller via Collage Spécial (Valeurs + mise en forme) dans
        Sheet name = 'Pivot Central'!B4
        Emplacement = Rechercherh(C4;'Sheet ciblée'!B10:X10;1) et coller à cet emplacement.


        Maintenant il ne me manque plus que la VBA.
        Please, please, please,
        Venez à ma rescousse.
        0
        1. Et un petit UP de rigueur en début de semaine.
          0
          1. Contributeur
            Bonjour,

            Une petite macro qui devrait effectuer ta fonction à placer dans un module :

            Public Sub transfert()
            Dim col As Integer
            With Sheets([B4].Value)
            For col = 2 To .UsedRange.Columns.Count
            If .Cells(10, col) = [C4] Then Exit For
            Next col
            Range("C5:D36").Copy Destination:=.Cells(11, col)
            MsgBox "Copie effectuée"
            End With
            End Sub

            Avec ton classeur : https://www.cjoint.com/c/DHzjnJuVCjD
            0
            1. Merci infiniment pour ton travail.
              La macro s'adapte nickel chrome.

              Juste un petit point -> Au sein de la macro quel opérateur faut-il ajouter pour réaliser une copie (Valeurs + mise en forme) ?
              0
          2. Bonjour,

            Ci joint le fichier complété d'un bouton d'alimentation

            https://www.cjoint.com/?DHzjGsn7WbU

            les données sont transféré en fonction de l'onglet sélectionné et de la date d'indiqué à côté.
            0
            1. Petit souci avec ta macro puisque mes valeurs sont copiées en tant que texte et non en conservant leur format actuel.
              0
          3. J'ai trouvé mon bonheur avec ce code. Merci à l'Inpactien
            Nitro-Teck.

            Merci aussi aux 2 personnes du dessus, car certaines parties de leur code m'intéressent également.

            Sub Copie()

            Application.ScreenUpdating = False
            'Selection de l'onglet principale
            Sheets("Pivot central").Select
            'Copie des cellules
            Range("C4:C36").Select
            Selection.Copy

            'Sélection de l'onglet à copier
            Nom = Range("B4")
            Mois = Range("C4")

            Sheets(Nom).Select
            Rows(10).Find(Mois, lookat:=xlWhole).Select
            Selection.PasteSpecial Paste:=xlPasteValues
            Selection.PasteSpecial Paste:=xlPasteFormats

            Application.CutCopyMode = False
            Sheets("Pivot central").Select

            Application.ScreenUpdating = True

            End Sub
            0