[MACRO] Copie de données dans onglet cible

Résolu
hotliner49 Messages postés 107 Statut Membre -  
hotliner49 Messages postés 107 Statut Membre -
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. WeaponEDGE Messages postés 114 Statut Membre 9
     
    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
  2. hotliner49 Messages postés 107 Statut Membre 3
     
    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
  3. hotliner49 Messages postés 107 Statut Membre 3
     
    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
  4. hotliner49 Messages postés 107 Statut Membre 3
     
    Et un petit UP de rigueur en début de semaine.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. hotliner49 Messages postés 107 Statut Membre 3
       
      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
  7. WeaponEDGE Messages postés 114 Statut Membre 9
     
    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. hotliner49 Messages postés 107 Statut Membre 3
       
      Petit souci avec ta macro puisque mes valeurs sont copiées en tant que texte et non en conservant leur format actuel.
      0
  8. hotliner49 Messages postés 107 Statut Membre 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