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 SubJames007 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 SubMais 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 WithBonjour,
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 Suble 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é