Copie une feuille d'un fichier ferme

  • Initiateur de la discussion Initiateur de la discussion ElCaralho
  • 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 !

E

ElCaralho

Guest
Salut tout le monde,
Je me suis mis recemment a la prog en vba pour mon taff et g un ptetit soucis, je n'arriv po a copier une feuille d'un classeur fermé dans mon classeur actif.

g fouillé et fouillé le forum mai le seul petit indice que g traouvé c comment recuperer la valeur d'une cellule, alor g bien penser a copier cellule par cellule mais g plus de 150 ligne et une 15zaine de colonnes, jvous laisse compter le nombre de celule que ca fé.

Je me doute qu'il faut utiliser un truc dans le genre :

"='" & Chemin & "\[" & NomFic & "]" & Onglet & "'!" .Copy

Mais impossible de trouver de solution.

Voila donc si vous avez une idée merci, merci bcp, de me faire signe!!
 
Re : Copie une feuille d'un fichier ferme

Salut Excalibur,
Mrci de ton conseil mais croi moi que si j'en vien a laisser un post c ke g passé la matinée a fouiller le forum, et ke tout les exemple dont tu parle ne regle pa mon probleme.

Moi e cherche a faire un truc du genre:

Dim MaFeuille As sheet
MaFeuille = "='" & Chemin & "\[" & NomFic & "]" & Onglet & "'!"

maFeuille.copy After:=Workbooks("MonClasseur").Sheets(1)

et la plupart d post ne correspondent po a ce ke je cherche, je pense que le probleme vien de la syntaxe de "='" & Chemin & "\[" & NomFic & "]" & Onglet & "'!"
il y a des truc a mettre a la suite mais je trouve pa koi!

Merci kan mm,

Jsui tjr en galerr, alor si vous avez une soluce, hesitez po!!!!
 
Re : Copie une feuille d'un fichier ferme

bonjour ElCaralho, bonjour cher Excalibur

Tu peux utiliser des formules de liaison afin d'extraire les données duclasseur:

Ouvre un classeur vierge
Dans la cellule A1, saisit la formule ci dessous, en adaptant:
Le chemin du classeur
Le nom du classeur
Le nom de la feuille qui contient les informations à récupérer.

='C:\Documents and Settings\michel\[monClasseur.xls]Feuil1'!A1

Le contenu de la cellule A1 de 'monClasseur.xls' va s'afficher dans la cellule A1 du nouveau classeur.
Ensuite, utilise les poignées de recopie pour étirer la formule sur les autres cellules.




Sinon, voici une macro qui permet de se connecter à un classeur afin d'extraire le contenu de la feuille nommée "Feuil1".

Necessite d'activer la référence Microsoft ActiveX Data Objects x.x Library

Code:
Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\monClasseurBase.xls"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Feuil1"
 
    Set Cn = New ADODB.Connection
 
    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------
 
    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst
 
    '--- Fermeture connection ---
    Cn.Close
    Set Cn = Nothing
End Sub

Ajoute le paramètre HDR=NO si vous souhaitez également récupérer le contenu de la première ligne. Celle ci est considérée comme un entête (ou Champ), par défaut.
";Extended Properties=""Excel 8.0;HDR=NO"""

Etant donné que la première ligne est considérée comme un entête, il est aussi possible de boucler sur les noms de champs afin d'en extraire le contenu:

Code:
    Dim i As Integer
    '
    '
    '...
    '
    'Définit la requête.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    '--- Boucle sur les entêtes pour récupérer les noms ---
    For i = 0 To Rst.Fields.Count - 1
        Cells(1, i + 1) = Rst.Fields(i).Name
    Next i
    '------------------------------------------------------
 
    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst
    '
    '...
    '


Bonne journée
MichelXld
 
Dernière édition:
Re : Copie une feuille d'un fichier ferme

Salut a tous!
Merci michel pour ta reponse tres detaillé!!
Ta macro utilisant la référence Microsoft ActiveX Data Objects x.x Library
est un peu trop evolué pour moi, jvé utiliser ta premiere idée, jpense fair comme ca:

Code:
   For Lign = 1 To 10
        For Col = 1 To 10
        Cells(Lign, Col) = "='" & Chemin & "\[" & LeFichier & "]" & LaFeuille & "'!R" & Lign & "C" & Col
        Next Col
   Next Lign

Ca marche mais ca recupere que les valeur, ya pa moyen de recuperer plus de truc,genre la police, la couleur du fond et aussi tres important Les Formules!!!

Si vous avez des idées, je suis tout ouies!
Merci Pour Tout!
Bne Journé
 
Re : Copie une feuille d'un fichier ferme

bonjour

ElCaralho à écrit:
ya pa moyen de recuperer plus de truc,genre la police, la couleur du fond et aussi tres important Les Formules!!!

à ma connaissance ce n'est pas possible sans ouvrir le classeur



Nat54 à écrit
si vous pouviez éviter le langage sms, ce serait plus sympa

Je partage la remarque de Nat54



Bon après midi
MichelXld
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
2
Affichages
982
MOmichel
M
W
Réponses
3
Affichages
2 K
wolfloner
W
C
Réponses
2
Affichages
890
clochete
C
G
Réponses
0
Affichages
6 K
G
Retour