Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Extraction d'un Tableau d'un fichier externe

  • Initiateur de la discussion Initiateur de la discussion miky973
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

miky973

XLDnaute Occasionnel
Bonjour,

Je recherche un script adéquate pour me permettre de sélectionner un tableau qui varie au niveau de ces valeurs mais pas des champs.

Mon problème c'est que je ne sais pas, Comment en cliquant sur un bouton extraire le tableau de ce fichier pour l'insérer sur une autre feuille telle un copier coller?

Problème le tableau commence de (B2:C2), et je souhaiterai que mon tableau commence à A1 sur ma feuille de destination.?

Ce code est un début mais, je ne sais pas comment l'introduire?

Code:
Sub SelectionPlage()
    ActiveCell.CurrentRegion.Select
    MsgBox ("La plage sélectionnée est : " & Selection.Address)
End Sub


Merçi pour votre aide

Best Regards
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour miky
Salut Hasco,

miky voici un code qui fonctionne bien
Si les 2 fichiers ne sont pas dans le même dossier il faut mettre manuellement à . . . chemin=??????le vrai chemin
Fichier ="FichierSource" si le fichier porte un autre nom rectifie
Le classeur source peut être ouvert ou fermé, pas de PB.
Voici le code à placer dans le fichier qui reçoit les données (dans un bouton)
Au lieu de B2 tu peux mettre B3 si tu veux pas les entêtes
Bruno
Code:
Private Sub CommandButton1_Click()
Dim Wb As Workbook
chemin = ThisWorkbook.Path & "\"
fichier = "FichierSource.xls"
Set Wb = GetObject(chemin & fichier)
x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell).Address
Wb.Sheets(1).Range("B2:" & x).Copy Feuil2.[A1]
Wb.Close
End Sub
 
Re : Extraction d'un Tableau d'un fichier externe

re bonjour,

Tu n'as pas non plus trouvé la charte du forum apparament. Sans quoi chacun de tes posts aurait un signe de courtoisie en début ET en fin et ne contiendrait pas de style sms ou télégraphique (pkoi, stp etc.).

En faisant une recherche sur 'classeur fermé' on trouve des choses.

A+
 
Re : Extraction d'un Tableau d'un fichier externe


Re-bonjour,

J'aime beaucoup ton code il me plait bien, mais quand je le copie colle comme indiquer, j'ai une erreur de compilation, avec une variable non définie. Que dois je faire?

Merci pour votre aide
 
Re : Extraction d'un Tableau d'un fichier externe


Bonjour Hasco,

Je suis désolé, vue qu'il s'agissait d'une réponse instantannée, je n'ai pas vue l'utilité de dire re-bonjour, et concernant les les abréviations, je prend note et ferai le nécessaire pour respecter cette charte.
Dans tous les cas, j'essaie de trouver la meilleur des solutions, pour ce projet qui est très important pour moi, alors merci pour tout.

Best Regards.
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour
Oui miky,
Notre seul remerciement est le merçi, alors le bonjour est de mise . . .
Pour la macro qui bug tu dois avoir surment Option Explicit en début de macro
Chose que j'ai supprimé chez moi mais dans ton cas il te faut déclarer les variables.
Donc endébut de la macro rajoute
Dim chemin, fichier,x
ou pour limiter la taille des variables
Dim chemin ,fichier As String
Dim x As Range
Bruno
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour Bruno,

J'essaie mais ayant un manque de notion en vba, je ne sais pas comment résoudre mon erreur, en déclarant mes variables, je reçois le message suivant : " Variable objet ou variable de bloc With non définie "

Ci tu pouvais me fournir plus d'explication pour la suite des opérations cela serai magnifique.

Merci pour ton aide.

Miky
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour,

remplacer déjà:
Code:
x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell ).Address

Par
Code:
Dim adr as String
Set x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell )
adr = x.Address
X est une référence à un objet (range) elle s'initialise donc avec Set.
Ou par
Code:
dim x as string
x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell ).Address

X est une variable 'String" pouvant contenir l'adresse textuelle de la cellule


A+
 
Re : Extraction d'un Tableau d'un fichier externe


Re-bonjour Hasco, je te remercie pour ton aide, j'essaie tjrs de le faire fonction mais je rçois une erreur toujours,
L'erreur est la suivante : Nom du fichier ou de la classe introuvable. J'ai bien précisé mon chemin pourtant et mon fichier kel est mon erreur?

Merci pour tout,

A +
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour,

Essaie ceci:

Code:
Function GetWorkBook(strFullPathToWorkbook As String) As Workbook
    Dim wkb As Workbook
    'Parcourir la colllection des classeurs ouverts
    For Each wkb In Workbooks
        'Si le chemin du classeur est le même que strFullpathtoworkbook
        If wkb.FullName = strFullPathToWorkbook Then
            'Retourner le classeur
            Set GetWorkBook = wkb
            Exit Function
        End If
    Next
    If wkb Is Nothing Then
        'si le classeur n'a pas été trouvé vérifié qu'il existe sur le disque
        If Dir(strFullPathToWorkbook, vbDirectory) <> "" Then
        ' s'il existe, l'ouvrir
        Set GetWorkBook = Workbooks.Open(strFullPathToWorkbook)
        End If
    End If
End Function
Private Sub CommandButton2_Click()
    Dim chemin, fichier As String
    Dim x As Range
    Dim Wb As Workbook
    Dim adr As String
    chemin = "d:\userdata\Stage\08-02-11\Test\Test\"
    fichier = "FichierSource.xls"
    Set Wb = GetWorkBook(chemin & fichier)
    If Not Wb Is Nothing Then
        Set x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell)
        adr = x.Address
        Wb.Sheets(1).Range("B2:" & x).Copy Feuil2.[A1]
        Wb.Close
    Else
        MsgBox "Le classeur n'a pas été trouvé," & vbclf & "vérifiez son chemin et son nom puis recommencez"
    End If
End Sub

Ton chemin n'était pas bon
ThisWorkbook.path est déjà le chemin du classeur qui contient la macro!
A+
 
Re : Extraction d'un Tableau d'un fichier externe


Re-bonjour,
On y arrive presque mais il reste toujours une petite erreur qui doit etre bégnine selon moi,

Set x = Wb.Sheets(1).Cells.SpecialCells(xlCellTypeLastCell)
adr = x.Address
Wb.Sheets(1).Range("B2:" & x).Copy Feuil2.[A1]
Wb.Close

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

Je penses que c mon Sheet qui doit poser problème mais je n'en suis pas sure.
Quel serait ta réponse vis à vis de cette erreur?

Merci encore pr votre aide

A+
 
Re : Extraction d'un Tableau d'un fichier externe

Re,

Ma réponse est que je vérifirais le contenu des variables en affichant la fenêtre 'Variable locales' lorsque la macro s'arrête sur la ligne qui ne va pas. Menu Affichage/Fenêtre variables locales.

J'en pense aussi que dans tes posts tu n'es pas obligé de 'répondnre avec citation' généralement je me souviens de ce que j'ai dis précédement.

J'en pense aussi que l'éditeur de post avancé permet de mettre les codes vba entre Balise
Code:
par le bouton #
ce qui les rend plus facile à lire.

A+
 
Re : Extraction d'un Tableau d'un fichier externe

Re, c'est bon j'ai trouvé la solution pour mon problème, j'ai un bidouiller lol, et ceux ki me donne ça au final.

Code:
Function GetWorkBook(strFullPathToWorkbook As String) As Workbook
    Dim wkb As Workbook
    'Parcourir la colllection des classeurs ouverts
    For Each wkb In Workbooks
        'Si le chemin du classeur est le même que strFullpathtoworkbook
        If wkb.FullName = strFullPathToWorkbook Then
            'Retourner le classeur
            Set GetWorkBook = wkb
            Exit Function
        End If
    Next
    If wkb Is Nothing Then
        'si le classeur n'a pas été trouvé vérifié qu'il existe sur le disque
        If Dir(strFullPathToWorkbook, vbDirectory) <> "" Then
        ' s'il existe, l'ouvrir
        Set GetWorkBook = Workbooks.Open(strFullPathToWorkbook)
        End If
    End If
End Function
Private Sub CommandButton2_Click()
    Dim chemin, fichier As String
    Dim plg As Range
    Dim wkb As Workbook
    Dim adr As String
    Dim Cell As Variant

  
    chemin = "d:\userdata\Stage\"
    fichier = "FichierSource.xls"
    Set wkb = GetWorkBook(chemin & fichier)
    With wkb.Sheets("Positions")
        Set plg = .Range("B2:AM" & .Cells(.Rows.Count, 2).End(xlUp).Row)
        If plg.Row < 2 Then
            MsgBox "La source n'a pas de données à importer", vbExclamation, "ImportDatasFromSource"
            GoTo FinImport
        End If
        'Pour copier strictement en A1 de Feuil2
        plg.Copy Destination:=ThisWorkbook.Sheets("Feuil2").Range("A1")
        'Pour copier dans la prochaine ligne libre de la colonne A de Feuil2:
        'plg.Copy Destination:=ThisWorkbook.Sheets("Feuil2").Cells(Application.Rows.Count, 1).End(xlUp)(2)
        MsgBox plg.Rows.Count & " lignes importées du fichiers source", vbInformation, "ImportDatasFromSource"
    End With
FinImport:
    
End Sub

Merci pour ton aide

A+
 
Re : Extraction d'un Tableau d'un fichier externe

Re bonjour,

Tant mieux. Personnellement je préfère ce code que celui que tu avais plus tôt.

Juste une suggestion pour aller un tout petit peu plus vite:
En haut de macro:

Code:
Dim shDestination as Worksheet
set shDestination = ThisWorkbook.Sheets("Feuil2")
Et plus bas:

Code:
plg.Copy Destination:=shDestination.Cells(Application.Rows.Count, 1).End(xlUp)(2)

C'est une façon, non seulement d'écrire un code plus facilement modifiable ultérieurement mais en plus cela évite à excel de 'réféchir' à chaque itération sur ce que peut bien être ThisWorkbook.Sheets("Feuil2").

A+
 
Re : Extraction d'un Tableau d'un fichier externe

Bonjour Hasco,

C'est une bonne idée, mais ma feuil2 va changer de nom par la suite, et sur demande, donc je préfère garder ThisWorkbook.sheets("Feuil2")
Merci pour ton aide.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
1 K
S
Réponses
13
Affichages
2 K
sanae_J
S
B
Réponses
3
Affichages
1 K
Réponses
1
Affichages
1 K
M
Réponses
6
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…