Importer une feuille Excel depuis un autre classeur

Patrice310

XLDnaute Nouveau
Bonsoir.

Je suis nouveau sur ce site et posséde malheureusement pas assez de notions Excel.
Aussi, j'espére trouver auprès de vous une réponse à mon petit soucis.

J'aimerai qu'une feuille (toujours nommée avec la même syntaxe) située dans un classeur (dont le nom n'est jamais le même mais qui contient bien cette fameuse feuille) s'importe dans une nouvelle feuille du classeur que j'ai crée.

J'imagine bien dans le classeur que j'ai crée un bouton macro "importer données" (ça je sais faire ;-))) qui ouvrirait une fenêtre à l'utilisateur lui demandant de sélectionner le classeur dans lequel se situe cette feuille à importer.

Au jour d'aujourd'hui, j'ouvre manuellement le classeur qui contient cette feuille et la déplace/copie dans mon classeur. Le probléme est que tous mes collégues ne savent pas forcément faire cette manip. Alors un bouton macro serait super et diminuerait les étapes pour eux.

J'espére que je suis à peu prés clair dans ce que je souhaite, si vous avez besoin de davantages d'infos, voir même de fichiers, n'hésitez pas.

Merci
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Importer une feuille Excel depuis un autre classeur

Bonjour


Ça tombe bien, je passais par ici en attendant la fin de ma lessive

J'arrive avec un tit bout de code pour de dépatouiller

Essayes d'adapter le code ci-dessous à celui de ton projet
Code:
Sub CheckSheetName()
Const LA_FEUILLE As String = "Activités"
Dim Sh As Worksheet, i&: i = 0
    For Each Sh In Worksheets
        If LA_FEUILLE = Sh.Name Then
            i = i + 1
        End If
    Next Sh
    If i >= 1 Then
        MsgBox "Cette feuille existe déjà", vbCritical, "ATTENTION"
        Exit Sub
    Else
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = LA_FEUILLE
    End If
End Sub
 
Dernière édition:

Patrice310

XLDnaute Nouveau
Re : Importer une feuille Excel depuis un autre classeur

Merci JM...

Voila, j'ai essayé et en fait je bloque (erreur execution)
Je pense ne l'avoir pas mis au bon endroit dans ma macro IMPORT.
Je te joins les fichiers pour que tu puisse visualiser par toi même. Comme ça tu pourras aussi voir le boulot que j'ai (nous) fait jusqu'alors et me donner ton avis (et remarques surement :D).

Mon projet est le fichier EFFECTIF MOYEN et fonctionne par l'import d'infos provenant du second fichier que j'ai "anonymisé".

Merci BEAUCOUP !!!
 

Pièces jointes

  • Nouveau dossier compressé.zip
    63.9 KB · Affichages: 61
  • Nouveau dossier compressé.zip
    63.9 KB · Affichages: 66
  • Nouveau dossier compressé.zip
    63.9 KB · Affichages: 73
Dernière édition:

Patrice310

XLDnaute Nouveau
Re : Importer une feuille Excel depuis un autre classeur

Salut JM, j'espére que tu vas bien !!
Merci pour ta réponse. voici le code de ma macro qui permet d'importer la feuille Activités dans mon projet puis de copier certaines infos de celle-ci dans la feuille ANALYSE EFFECTIF MOYEN.

VB:
Sub IMPORT()
Dim nom$, WBKSource As Workbook
Application.DisplayAlerts = False
Application.DisplayAlerts = True
 With Application.FileDialog(msoFileDialogOpen)
 .Title = "Choisissez le fichier à analyser"
     .Filters.Clear
     .Filters.Add "Fichier Excel", "*.xls*"
     .AllowMultiSelect = False
         If .Show <> 0 Then
         nom = .SelectedItems(1)
             Set WBKSource = Workbooks.Open(nom)
' je voudrais que si la feuille Activités n'existe pas dans le fichier sélectionné par l'utilisateur une msgbox le lui signale
With WBKSource
    .Sheets("Activités").Copy Before:=ThisWorkbook.Sheets(1)
    .Close False
End With
         Else
         MsgBox "Aucun fichier n'a été sélectionné", , "Erreur": Exit Sub
         End If
 End With
Application.DisplayAlerts = True
Sheets("Activités").Select
Range("A5:A2006,D5:D2006,E5:E2006,F5:F2006,H5:H2006,J5:J2006,S5:S2006,U5:U2006,W5:W2006").Select
Selection.Copy
Sheets("ANALYSE EFFECTIF MOYEN").Select
Range("B6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Activités").Select
Range("AI5:AI2006,AK5:AK2006").Select
Selection.Copy
Sheets("ANALYSE EFFECTIF MOYEN").Select
Range("AP6").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Activités").Select
Range("AI4").Select
Selection.Copy
Sheets("ANALYSE EFFECTIF MOYEN").Select
Range("AK5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B6").Select
'Message résultat neutralisé pour l'instant
'MsgBox "Pensez à corriger ce résultat en excluant, via les filtres, les salariés exclus du décompte de l'effectif.", vbInformation + vbOKOnly, "RESULTAT IMPORT"
End Sub

Merci d'avance pour ton aide !!!
J'aurai sans doute une autre demande du même style ensuite.... faire une vérif lors de la création d'une nouvelle feuille pour s'assurer que cette feuille n'existe pas déja, je t'enverrai le code .....

Patrice.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Importer une feuille Excel depuis un autre classeur

Re


Pour cette partie de ta question, je t'ai déjà répondu non ?
C'était le 21/01 à 15h20.
faire une vérif lors de la création d'une nouvelle feuille pour s'assurer que cette feuille n'existe pas déja
Code:
Sub CheckSheetName()
Const LA_FEUILLE As String = "Activités"
Dim Sh As Worksheet, i&: i = 0
    For Each Sh In Worksheets
        If LA_FEUILLE = Sh.Name Then
            i = i + 1
        End If
    Next Sh
    If i >= 1 Then
        MsgBox "Cette feuille existe déjà", vbCritical, "ATTENTION"
        Exit Sub
    Else
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = LA_FEUILLE
    End If
End Sub
 
Dernière édition:

Patrice310

XLDnaute Nouveau
Re : Importer une feuille Excel depuis un autre classeur

Non pas tout à fait...
La vérif dont tu parles (la seconde dans mon post) doit se faire sur une feuille dont le nom n'est pas figé (donc pas Activités) et qui varie selon le fichier importé par l'utilisateur et l'année analysée.

Si tu prends mon fichier joint précédemment, il s'agit de la macro ENREGISTRER_FEUILLE, que voici :

VB:
Sub ENREGISTRER_FEUILLE()

'CREATION NOUVELLE FEUILLE
ONGLET = Range("AG3")
ANNEE = Range("D2")
If ANNEE = "" Then MsgBox "Aucun fichier n'a été importée", , "Enregistrement feuille impossible": Exit Sub
Sheets("ANALYSE EFFECTIF MOYEN").Select
Sheets("ANALYSE EFFECTIF MOYEN").Copy after:=Sheets(2)
Sheets("ANALYSE EFFECTIF MOYEN (2)").Select
Sheets("ANALYSE EFFECTIF MOYEN (2)").Name = ONGLET
MsgBox "L'onglet " & ONGLET & " a été crée" & vbNewLine & vbNewLine & "Merci d'utiliser ce dernier pour toute modification sur l'année " & ANNEE, vbInformation + vbOKOnly, "FEUILLE BIEN ENREGISTREE"
'à ce niveau là, il faudrait une vérif que la feuille créée n'existe déja pas

'DEPLACEMENT DES BOUTONS
Range("B1:B2").Select
Selection.Cut Destination:=Range("AX1")
Range("H1:H2").Select
Selection.Cut Destination:=Range("AY1")
Range("I1:I2").Select
Selection.Cut Destination:=Range("AZ1")
Range("BB1").Select
Selection.Cut Destination:=Range("H2")
Range("B6").Select

'EFFACEMENT GRILLE DE SAISIE
Sheets("ANALYSE EFFECTIF MOYEN").Select
On Error Resume Next
ActiveSheet.ShowAllData
Range("B6:J2006,AK5,AP6:AP2006,AQ6:AQ2006").Select
Selection.Clear
Range("B6").Select
Application.DisplayAlerts = False
Sheets("Activités").Delete
Application.DisplayAlerts = True
End Sub

En fait, pour finir mon projet, il me faudrait ces deux vérifs, histoire d'eviter des Erreur d'execution.

Merci à toi.
 

Patrice310

XLDnaute Nouveau
Re : Importer une feuille Excel depuis un autre classeur

Ok mais comment signifier en VBA qu'il vérifie qu'un onglet ne porte pas déja ce nom ? (ONGLET = Range("AG3") dans mon code)
Et à quel endroit placer ton code dans le mien dans ma macro ENREGISTRER_FEUILLE ?
Merci.
 

Patrice310

XLDnaute Nouveau
Re : Importer une feuille Excel depuis un autre classeur

Salut JM !!

Tu vas me prendre pour un boulet, mais je n'y arrive pas......snifffff...

Je crois que je la place au mauvais endroit dans ma macro ENREGISTRER_FEUILLE.

L'erreur d'execution provient de la ligne "Const LA_FEUILLE As String = Worksheets("ICI.NOM.DE.LA.FEUILLE.OU.EST.AG3").Range("AG3").Text " et bloque sur ".Text"

Rassures toi j'avais bien modifié le nom de la feuille en ANALYSE EFFECTIF MOYEN, promis.

Je t'envoie mon projet ainsi qu'un exemple de fichier à importer pour que tu puisse voir par toi même mes macros.

Je te remercie... A+
 

Pièces jointes

  • Exemple Forum.zip
    188.5 KB · Affichages: 40
  • Exemple Forum.zip
    188.5 KB · Affichages: 37
  • Exemple Forum.zip
    188.5 KB · Affichages: 44

Staple1600

XLDnaute Barbatruc
Re : Importer une feuille Excel depuis un autre classeur

Bonjour


Ceci voulait t'indiquer qu'à la place de ces mots
"ICI.NOM.DE.LA.FEUILLE.OU.EST.AG3

il faut remplacer par le nom de la feuille

Exemple: si ma feuille (ou l'onglet si tu préfères) se nomme TOTO
il faudrait adapter comme ceci:
Code:
Const LA_FEUILLE As String = Worksheets("TOTO").Range("AG3").Text

EDITION: Oups j'avais pas lu ton message jusqu'au bout

Ps: ne peux faire de test, suis sur un PC "libre" ;)

De retour chez moi, j''allumerai mon netbook qui lui est "excelisé" :p et je regarderai ta PJ.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 251
Membres
103 497
dernier inscrit
FAHDE