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 une feuille vers une autres en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut Copier une feuille vers une autres en VBA
    Bonjour,
    J’ai feuille1 Excel du classeur1 avec des colonnes prédéfinies mais vides et j’ai une feuille2 chargée de données du classeur2 avec des colonnes sous des titres quelconques et je veux copier en VBA la feuille2 sur la feuille1 en ouvrant une boite de dialogue qui me demandera les correspondances entre les colonnes. Est-ce possible ? Si oui comment procéder (Un code VBA serait le bienvenu)?
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    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
    17
    18
    19
    Essaie la macro suivante. Si une colonne ne doit pas être copiée, clique sur "Annuler" :
     
    Sub test()
    'Réf. zemblamoh 111121.xlsm
    Dim Col As Integer, Cible As String, Source As String
    With Sheets("Feuil2")
        Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For i = 1 To Col
            Source = Cells(1, i).Address(0, 0)
            Source = Split(Source, "1")(0)
            Cible = InputBox("Où faut il coller la colonne " & Source & "?")
     
            If Application.IsText(Cible) And Cible <> "" Then
                .Cells(1, Source).EntireColumn.Copy
                Sheets("Feuil1").Cells(1, Cible).PasteSpecial xlPasteValues
            End If
        Next i
    End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut copie de feuille dans Excel
    Je viens d'insérer votre code dans un exemple mais il bloque au niveau de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Cells(1, Cible).PasteSpecial xlPasteValues
    En plus il me dicte les colonnes A, B, C... au lieu des titres de la 1ère ligne de "Feuil2".
    j'ai fait l'exemple dans un fichier xlsx.
    Message d'erreur:

    Erreur d'exécution "1004"
    Erreur définie par l'application ou par l'objet.

    Merci pour votre aide

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    En plus il me dicte les colonnes A, B, C... au lieu des titres de la 1ère ligne de "Feuil2".
    Tu préfères les titres ? et tu réponds en renseignant les lettres de la colonne correspondante ? Quelle était la colonne affichée, et qu'est-e que tu as saisi ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut
    Oui, je préfère les titres de la "feuil2".
    Oui, je le renseigne avec titre de "feuil1"
    Quand je démarre la macro, il affiche:
    Où faut il coller la colonne A
    et je réponds en renseignant avec le titre voulu de la "feuil1".
    Merci pour votre patience

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    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 test()
    'Réf. zemblamoh 111121.xlsm
    Dim Col As Integer, Cible As String, Source As String, Teste As Variant
    With Sheets("Feuil2")
        Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For i = 1 To Col
            Cible = InputBox("Où faut il coller la colonne " & .Cells(1, i) & "?")
            Teste = Application.Match(Cible, Sheets("Feuil1").Rows(1), 0)
            If IsNumeric(Teste) Then
                Range(.Cells(2, i), .Cells(.Rows.Count, i).End(xlUp)).Copy
                Sheets("Feuil1").Cells(2, Teste).PasteSpecial xlPasteValues
            End If
        Next i
    End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut
    Merci beaucoup ça marche à merveille.

  8. #8
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut copier une feuille sur une autre en vba
    Bonjour,
    J'aimerai revenir sur ce sujet si c'est possible. Je souhaite dans le dialogue générer par ce programme:
    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 test()
    'Réf. zemblamoh 111121.xlsm
    Dim Col As Integer, Cible As String, Source As String, Teste As Variant
    With Sheets("Feuil2")
        Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For i = 1 To Col
            Cible = InputBox("Où faut il coller la colonne " & .Cells(1, i) & "?")
            Teste = Application.Match(Cible, Sheets("Feuil1").Rows(1), 0)
            If IsNumeric(Teste) Then
                Range(.Cells(2, i), .Cells(.Rows.Count, i).End(xlUp)).Copy
                Sheets("Feuil1").Cells(2, Teste).PasteSpecial xlPasteValues
            End If
        Next i
    End With
    End Sub
    De vérifier quand je renseigne le titre de la feuille2 si ce titre existe ou pas. Dans ce cas dernier que le programme m'avertisse par un message et que le curseur revient de nouveau pour renseigner le titre en erreur.
    Merci pour toute aide

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Essaie comme ceci :

    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
    17
    18
    Sub test()
    'Réf. zemblamoh 111121.xlsm
    Dim Col As Integer, Cible As String, Source As String, Teste As Variant
    With Sheets("Feuil2")
        Col = .Cells(1, .Columns.Count).End(xlToLeft).Column
        For i = 1 To Col
            Cible = InputBox("Où faut il coller la colonne " & .Cells(1, i) & "?")
            Teste = Application.Match(Cible, Sheets("Feuil1").Rows(1), 0)
            If IsNumeric(Teste) Then
                Range(.Cells(2, i), .Cells(.Rows.Count, i).End(xlUp)).Copy
                Sheets("Feuil1").Cells(2, Teste).PasteSpecial xlPasteValues
            Else
                MsgBox "Titre cible incorrect"
                i = i - 1
            End If
        Next i
    End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #10
    Membre habitué

    Homme Profil pro
    Ingénieur géologue
    Inscrit en
    Août 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur géologue

    Informations forums :
    Inscription : Août 2008
    Messages : 125
    Points : 158
    Points
    158
    Billets dans le blog
    4
    Par défaut copier une feuille sur une autre en vba
    Merci beaucoup, ça marche bien

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

Discussions similaires

  1. [XL-2007] Copier plage cellules d'une feuille vers une autre en VBA
    Par Sikanda dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 09/07/2015, 09h54
  2. [XL-2007] Copier des données d'une feuille vers une autre feuille
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2011, 12h08
  3. [XL-2007] copier une ligne d'une feuille vers une autre feuille
    Par scarfunk dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/05/2010, 22h18
  4. [XL-2003] Copier le contenu d'une feuille vers une autre feuille
    Par monichou86 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2010, 06h23
  5. copier des cellule d'une feuille vers une autre feuille
    Par DIDIDIDA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 12h13

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