Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier/coller en fonction du nom de L'onglet


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Copier/coller en fonction du nom de L'onglet
    Bonjour a tous,

    Je cherche a faire un copier/coller en fonction d'un nom d'onglet qu'il y a sur mon fichier c'est a dire :

    J'ai un classeur avec plusieurs feuilles. La première comporte 4 colonnes qui correspond a des coordonnées de points avec : num point ; X ; Y ; Z. Les feuilles suivantes sont a remplir en fonction des données de la première feuille. Le nom de chaque feuille a remplir correspond au même nom du points de la première feuille. Je cherche donc a faire : je sélectionne mon premier nom de point, je recherche dans le classeur la feuille avec le même nom et je remplir en copier/coller 3 cellules puis je passe au points suivant.

    Mon problème est que je n'arrive pas a interagir avec le nom des onglets . J'ai essayé ce code :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public i, ligne As Integer
     
    Sub copiercoller()
    Dim myRange As Range
    Dim Cell As Range
    Dim O As Worksheet 'déclare la variable O (Onglets)
     
    Set myRange = Sheets("Points").Range("A1:A5000")
      For Each Cell In myRange
        If Cell.Value = O.Name Then
            Sheets("O.Name").Range("A5").Value = "X= " & Sheets("Points").Range("B1").Value
            Sheets("O.Name").Range("C5").Value = "Y= " & Sheets("Points").Range("C1").Value
            Sheets("O.Name").Range("C29").Value = Sheets("Points").Range("D1").Value
        End If
      Next Cell
    End Sub


    Je mets en PJ un exemple de mon classeur.

    Cordialement

    Jujudeo

  2. #2
    Membre chevronné
    Bonjour,

    Une façon de faire:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub copiercoller()
        Dim kR As Long
        ThisWorkbook.Sheets("Points").Activate
        '--- présume que 1er point en ligne 1
        '--- et s'arrête dès que cellule vide en colonne 1 (A)
        kR = 1
        While Cells(kR, 1) <> ""
            With ThisWorkbook.Worksheets(Cells(kR, 1).Value)
                .Range("A5").Value = "X= " & Range("B1").Value
                .Range("C5").Value = "Y= " & Range("C1").Value
                .Range("C29").Value = Range("D1").Value
            End With
            kR = kR + 1
        Wend
    End Sub

    Cordialement.

  3. #3
    Membre à l'essai
    Bonjour,

    merci beaucoup pour votre code, mais sur la feuille points, votre macro code les coordonnées de la première ligne et ne passe pas a la ligne suivante, c'est a dire que pour chaque feuille, il copie toujours les coordonnées de la première ligne.

    Or, moi mon but c'est que par exemple si le nom du point est "n°484" sur la feuille "Points", il copie les coordonnées de ce point sur la feuille n°484.

  4. #4
    Membre chevronné
    Effectivement, j'étais distrait!
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub copiercoller()
        Dim kR As Long
        ThisWorkbook.Sheets("Points").Activate
        kR = 1
        '--- présume que 1er point en ligne 1
        '--- et s'arrête dès que cellule vide en colonne A
        While Cells(kR, 1) <> ""
            With ThisWorkbook.Worksheets(Cells(kR, 1).Value)
                .Range("A5").Value = "X= " & Cells(kR, 2).Value
                .Range("C5").Value = "Y= " & Cells(kR, 3).Value
                .Range("C29").Value = Cells(kR, 4).Value
            End With
            kR = kR + 1
        Wend
    End Sub

    Cordialement.

  5. #5
    Membre à l'essai
    C'est parfait merci beaucoup ! sujet résolu