[VBA] importer contenu d'une feuille

swan

XLDnaute Junior
Bonjour,

je voudrais savoir s'il est possible, au moyen d'une macro, d'importer les données d'une feuille d'un classeur vers un autre classeur. En clair, copier tout le contenu de [Classeur1-Feuil1] et le coller dans [Classeur2-Feuil1] et non pas copier-coller la feuille en elle même.

En fait, je voudrais créer un bouton dans [Classeur2-Feuil1] qui ouvre une boîte de dialogue dans laquelle je pourrais sélectionner le fichier excel à importer.

Merci!
 

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

Bonjour,

je voudrais savoir s'il est possible, au moyen d'une macro, d'importer les données d'une feuille d'un classeur vers un autre classeur. En clair, copier tout le contenu de [Classeur1-Feuil1] et le coller dans [Classeur2-Feuil1] et non pas copier-coller la feuille en elle même.

En fait, je voudrais créer un bouton dans [Classeur2-Feuil1] qui ouvre une boîte de dialogue dans laquelle je pourrais sélectionner le fichier excel à importer.

Merci!

Bonjour

faire un copier / collage spécial choisir valeur

Cdlt

RGI
 

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

les deux classeurs sont ouverts

Code:
Sub collagesp()
    Windows("Classeur1").Activate
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveWindow.WindowState = xlMinimized
    Windows("Classeur2").Activate
    ActiveWindow.WindowState = xlNormal
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    'ActiveWindow.Close
End Sub

Cdlt

RGI
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

Merci Gilbert,

moi aussi j'ai utilisé l'enregistreur de macro mais ça va pas rtésoudre mon problème.

Moi, je voudrais surtout utiliser un bouton qui ouvre une fenêtre (comme celle de "ouvrir") où je pourrais parcourir pour sélectionner le fichier excel à importer (qui est d'ailleurs fermé).

... bon j'ai pas fini mon post, là je réfléchie comment je pourrai importer mon fichier, j'ai peut-être une solution mais si vous avez quelque chose, faîtes moi signe!
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

mon enregistreur de macro me donne ça:

Sub test()

Workbooks.Open Filename:= _
"C:\Documents and Settings\mutthe\Mes documents\Classeur1.xls"
' ouvre "Classeur1"
Range("A1:D15").Select ' sélectionne toutes les données non vides de ce classeur
Selection.Copy
Windows("Classeur2.xls").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub


mais je voudrais "généraliser" ce code où je pourrais ouvrir n'importe quel fichier et ne plus avoir "Classeur1" et "Classeur2"...
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

Voilà je voudrais remplacer ce qu'il y a en rouge par "l'autre classeur qui est ouvert" et dont je ne connais pas le nom.

Sub test()

Windows("Classeur1.xls").Activate
Range("A1:D15").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub
 

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

voilà un code pour ouvrir un fichier

Code:
Sub OuvertureFichier()

Dim a As Variant, Nom As String

Application.ScreenUpdating = False
Nom = ActiveWorkbook.Name
ChDrive "C:"  ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
    , "Sélection de vos fichiers excel", , True)

Select Case TypeName(a)
    Case Is = "Boolean"
        Exit Sub
    Case Else
        For b = LBound(a) To UBound(a)
            Workbooks.Open a(b)
        Next
 End Select
 Application.ScreenUpdating = True
Workbooks(Nom).Activate

End Sub

à adapter à votre code

RGI
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

Merci ce code marche très bien

Sub test()

Windows("Classeur1.xls").Activate
Cells.Select
Selection.Copy
Windows("Classeur2").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub

maintenant, je voudrais remplacer la première ligne en rouge par un code qui active la fenêtre du fichier excel dont je ne connais pas le nom. C'est possible?
 

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

Sub test()
Dim a As Variant, Nom As String

Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)

Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select

'Windows(a(b)).Activate 'ligne à supprimer
Cells.Select
Selection.Copy
Windows(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

on peut aussi

Code:
Sub test()
Dim a As Variant, Nom As String

Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)

Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select

nom2 = ActiveWorkbook.Name
Cells.Select
Selection.Copy
Windows(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Nom2).Close
End Sub

Cdlt

RGI
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

j'ai départagé le code en 2:

Sub test1()

Dim a As Variant, Nom As String

Application.ScreenUpdating = False
Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)

Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select
Application.ScreenUpdating = True
Workbooks(Nom).Activate

End Sub

Sub test2()

Windows(a(b)).Activate
Cells.Select
Selection.Copy
Windows(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub


résultat --> le premier code marche bien, le 2e me met: "Erreur de compilation, Sub ou Function non définie" et me désigne l'erreur en rouge.

je me demande s'il faut pas créer une fonction ("Function...") à part dans un module. Alors là, je sais pas m'y prendre...
 

gilbert_RGI

XLDnaute Barbatruc
Re : [VBA] importer contenu d'une feuille

voir le second code que j'ai posté il fonctionne très bien

il faut ajouter 2 lignes voilà

Code:
Sub test()
    Dim a As Variant, Nom As String

    Nom = ActiveWorkbook.Name
    ChDrive "C:"    ' Choix du lecteur
    ChDir "C:\"    'Choix du répertoire
    a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
                                    , "Sélection de vos fichiers excel", , True)

    Select Case TypeName(a)
    Case Is = "Boolean"
        Exit Sub
    Case Else
        For b = LBound(a) To UBound(a)
            Workbooks.Open a(b)
        Next
    End Select

    Nom2 = ActiveWorkbook.Name
    Cells.Select
    Selection.Copy
    Windows(Nom).Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                                                    :=False, Transpose:=False
    Application.DisplayAlerts = False
    Windows(Nom2).Close
    Application.DisplayAlerts = True

End Sub
 

swan

XLDnaute Junior
Re : [VBA] importer contenu d'une feuille

Ok le code fonctionne comme il le faut mis à part qu'il me met un ptit message d'erreur: "l'indice n'appartient pas à la sélection"

je ne comprend pas trop pourquoi il met ça ce qui n'a pas empêché le code de marcher.

j'aimerais juste savoir où est la source de cet erreur...

en tout cas, tu m'as bien aidé, je t'en remercie!
 

quelqun

XLDnaute Nouveau
Re : [VBA] importer contenu d'une feuille

Bonjour,
Tout d'abord je tiens à vous remercier, ce petit programme m'a été fort utile :).
Il fonctionne parfaitement sauf quand il s'agit de copier coller un ensemble d'environ 9000 lignes et 70 colonnes. Cela fait beaucoup, je vous l'accorde, mais pourriez vous m'expliquer pourquoi manuellement le copier coller s'effectue en moins de 2 secondes mais qu'avec le programme 6 minutes entière ne suffisent pas?

EDIT: ne s'agirait il pas du presse papier? dans le cas manuel ce serait celui de windows et dans la macro VBA ce serait celui de office? Est il donc possible de choisir le presse papier avant de copier coller? Merci baucoup :)
 
Dernière édition:

Discussions similaires

Réponses
26
Affichages
377

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16