Importer une feuille dans mon classeur

Bonjour,

Débutant sous Excel, j'ai parcouru le forum et le net mais je n'ai pas trouvé de solution.

J'ai un classeur avec plusieurs feuille, dont "TOTO", je souhaite mettre un bouton sur une de mes feuilles et en cliquant dessus, j'aimerais pouvoir choisir le fichier excel sur mon pc, celui-ci contient une feuille "A", et importer cette feuille "A" dans mon classeur afin de pouvoir utiliser les données qu'il contient pour mettre à jour les données de ma feuille "TOTO".

Merci pour votre aide.

Bonjour,

Pour te donner une première idée ...

Mets en marche ton enregistreur de macros ... et va à travers ton processus une fois ...

Tu obtiendras une"traduction" en language macro de tes actions ...

Bonjour,

voici un exemple de macro

Sub copiesource()
    Set wbc = ThisWorkbook
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd ' selectionner le fichier
        .Title = "ouvrir fichier source"
        .Filters.Clear
        .Filters.Add "fichier Excel", "*.xls*"
        .AllowMultiSelect = True
        If .Show = -1 Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            For Each classeurcible In .SelectedItems

                Set wb = Workbooks.Open(classeurcible) 'on ouvre le fichier
                wb.Worksheets("A").Copy after:=wbc.Worksheets(wbc.Worksheets.Count) ' on copie la feuille A
                wb.Saved = True
                wb.Close
            Next    ' fichier suivant
            Application.ScreenUpdating = False
            Application.EnableEvents = False
        End If
    End With
End Sub
James007 a écrit :

Bonjour,

Pour te donner une première idée ...

Mets en marche ton enregistreur de macros ... et va à travers ton processus une fois ...

Tu obtiendras une"traduction" en language macro de tes actions ...

ok sauf que je ne sais pas comment faire pour importer une feuille d'un autre fichier...

J'ai aussi plusieurs questions générales ou je n'ai pas trouvé l'info et je ne sais pas trop ou poster ça... me faudrait une formation personnelle en fait

Bonjour,

Comment fais-tu aujourd'hui ...???

Importer ... est un concept sophistiqué ...

Si tu sais Copier - Coller ... tu peux déjà commencer par çà ...

Si le fichier dans lequel tu veux retrouver les infos est déjà ouvert ...(fichier N°1)

1. Tu mets en route ton enregistreur de macros ...

2. Tu ouvres le fichier N°2 dans lequel se trouve les sinfos dont tu as besoin ...

3. Tu copies de ce fichier N°2 vers ton premier fichier ...

4. Tu fermes le fichier N°2 ...

5. Tu arrêtes l'enregistreur de macros ...

Dans ton fichier de base, tu as maintenant une macro qui peut te servir de point de départ ...

Ok j'ai compris ça, ça me donne ça :

Sub Import()
'
' Import
'

'
    Workbooks.Open Filename:="J:\export1.xls"
    Range("A2:H11").Select
    Selection.Copy
    Windows("export1.xlsx").Activate
    Range("A12").Select
    ActiveSheet.Paste
End Sub

Mais si j'applique ça sur un bouton, ça ne va pas, il faut que je puisse avoir une boite de dialogue pour aller choisir mon fichier... ensuite ce n'est pas toujours le même nombre de ligne à importer (par contre, y'aura tjs le même nombre de colone) et c'est à coller en dessous des lignes déjà existante dans mon fichier... en gros, c'est pour alimenter un fichier... par la suite j'aurais des doublons, mais ça je pense trouver comment supprimer les doublons.

Si je remplace

Workbooks.Open Filename:="J:\export1.xls"

par ce que j'ai trouvé

  Dim QuelFichier
  QuelFichier = Application.GetOpenFilename()
  If QuelFichier <> False Then
    MsgBox QuelFichier
  Else
    MsgBox "Vous n'avez pas sélectionné de fichier"
  End If

ça m'affiche juste le MsgBox... ça n'ouvre pas le fichier dans Excel donc le reste de ma Macro ne fonctionne pas.

Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Windows("export1.xlsm").Activate
    ActiveSheet.Range("A1").End(xlDown).Offset(1).Select
    ActiveSheet.Paste
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

Bonjour,

essaie ceci, (non testé)

assemblage des morceaux que tu as fournis.

Sub test()
    Dim QuelFichier
    QuelFichier = Application.GetOpenFilename()

    If QuelFichier <> False Then MsgBox "Vous n'avez pas sélectionné de fichier": Exit Sub

    Workbooks.Open QuelFichier

    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Windows("export1.xlsm").Activate
    ActiveSheet.Range("A1").End(xlDown).Offset(1).Select
    ActiveSheet.Paste
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub

ça m'affiche seulement le MsgBox "Vous n'avez pas sélectionné de fichier"

Et si on annule avant d'avoir choisi le fichier, ça plante la Macro

Merci pour votre aide, dommage que je n'ai pas les explications du code, y'a certaine formule que je ne comprend pas.

J'ai des connaissances de code php4/html/css

Bonjour,

j'ai oublié de remplacer un <> par un =

essaie ceci

Sub test()
    Dim QuelFichier
    QuelFichier = Application.GetOpenFilename()

    If QuelFichier = False Then MsgBox "Vous n'avez pas sélectionné de fichier": Exit Sub

    Workbooks.Open QuelFichier

    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close
    Windows("export1.xlsm").Activate
    ActiveSheet.Range("A1").End(xlDown).Offset(1).Select
    ActiveSheet.Paste
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub
 

ça marche, sauf si on annule et qu'on sélectionne pas de fichier, j'ai bien le MsgBox mais j'ai aussi

Erreur d’exécution '1004' : Faux.xlsx introuvable [...]


Ah c'est bon, j'ai trouvé... je ne mettais pas mon code dans le if.

Super ! Merci pour votre aide, mais ce n'est que le début, j'ai plein d'autres demandes

Je met le code final pour que ça puisse aider d'autres personnes qui souhaitent :

importer toutes les lignes, sauf la 1ere, d'une feuille excel d'un fichier pour les ajouter à la suite des lignes existantes d'une feuille excel d'un autre fichier

Sub Import()
'
' Import
'
    MonClasseurActif = ActiveWorkbook.Name 'memorise le classeur actif

    Dim QuelFichier
    QuelFichier = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls", Title:="Sélectionnez le fichier à importer")

    If QuelFichier <> False Then
    Workbooks.Open QuelFichier
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    ActiveWindow.Close

    Windows(MonClasseurActif).Activate
    ActiveSheet.Range("A1").End(xlDown).Offset(1).Select
    ActiveSheet.Paste

    Else
        MsgBox "Vous n'avez pas sélectionné de fichier"
    End If

End Sub

le feuille que j'importe est dans un classeur qui ne comporte qu'une feuille.

Je viens de m’apercevoir que les données que j'importe son modifier à la copie.

En effet, dans la source j'ai des champs Standard qui contiennent une date et l'autre un chiffre qui comment par 0...

A la copie, le 0 a disparu et la date, se transforme en date américaine (inversion mois et jour).

je ne comprend pas trop pourquoi

Si je sélectionne la colonne du fichier destination et que je met le format texte, lors de la copie ça garde bien le 0, par contre la colonne date a bien le format date français au niveau de la source et de la copie, donc je ne comprend pas pourquoi elle est modifié.

Aussi, rien n'est modifié si je fais mon copier/coller manuellement, le problème est seulement avec la macro

Salut, est ce que tu as trouvé une solution pour l'inversion jour mois???

Non j'ai pas trouvé et j'ai laissé tombé

Rechercher des sujets similaires à "importer feuille mon classeur"