IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut 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
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    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 confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    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
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    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 confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    C'est parfait merci beaucoup ! sujet résolu

  6. #6
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Bonjour,

    je re-up cette discussion. Cette macro marche très bien cependant serait il possible de faire le copier-coller en fonction du NOMBRE qu'il y a dans la cellule et dans la l'onglet ? et pas en fonction de son nom ?

    Car j'ai des onglets ou il y a un espace a la fin du coup la macro bug.

    Ex: j'ai certaines cellules qui s'appellent "n°326" et mon onglet "n°326 " avec un espace juste apres le nombre du coup la macro ne reconnait pas le nom de la cellule.

    Je vous remercie par avance.

    Julien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] copier coller en fonction du nom
    Par ledon94 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/03/2018, 13h59
  2. Copier coller en fonction des dates
    Par hortencia dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/12/2011, 10h51
  3. [XL-2003] Copier coller en fonction de non vide d'une colonne adjacente
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2011, 20h43
  4. Copier coller en fonction de variable
    Par teddy72000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/02/2011, 04h07
  5. [XL-2007] Copier-coller en fonction de valeurs en vba
    Par PersianPrince dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/08/2010, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo