Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2011, 12h52   #1
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
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
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 15h05   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Code :
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 17h59   #3
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
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 :
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
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 18h26   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Citation:
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 20h41   #5
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
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:
Citation:
Où faut il coller la colonne A
et je réponds en renseignant avec le titre voulu de la "feuil1".
Merci pour votre patience
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 21h09   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Code :
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 21h21   #7
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
Merci beaucoup ça marche à merveille.
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 10h56   #8
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
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 :
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
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h35   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie comme ceci :

Code :
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

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2011, 16h17   #10
Nouveau Membre du Club
 
Inscription : août 2008
Messages : 113
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 113
Points : 27
Points : 27
Par défaut copier une feuille sur une autre en vba

Merci beaucoup, ça marche bien
zemblamoh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h50.


 
 
 
 
Partenaires

Hébergement Web