Acceder a un classeur. (Mac)

Bonjour à tous ,

Je précise que je travaille avec un vieil office Mac.
Comment faire pour accéder à une feuille d’un classeur qui se trouve dans un dossier placé sur le bureau.
Par avance merci beaucoup.
José

Bonjour,

Merci de bien vouloir compléter votre profil en ajoutant au minimum la version excel que vous utilisez. (2019, 2016.. MAC 2011, ..) et en précisant si vous êtes toujours sur MAC ou pas.


Pour votre demande, votre question est trop vague. Vous voulez accéder à une feuille depuis un autre fichier ou dans le fichier que vous utilisez ?

Hello Dan

Et merci de répondre si vite. Excel2011 version 14.7.7

Le classeur xlsm qui contient la macro est dans le dossier disons MMM placé sur le bureau du Mac.
la feuille (tableau en A1) que je veux atteindre se trouve dans un classeur XXX lui même situé dans le dossier MMM

Je travaille sur le Mac pour résoudre ce problème.
Sur mon pc ce type de problème ne me pose aucune difficulté.
Si vous pouvez éclairer ma lanterne ….!!!

José

j’ai cliqué trop vite.
Je voudrais rapatrier le tableau dans le classeur où se trouve la macro.

Ok. J'ai la même version

Pourriez-vous poster votre code en utilisant les balises de code -->

...oubliez pas de modifier votre profil...

De retour,

Voilà mon code

Sub ListeClasseursDansDossier()
    Dim CheminDossier As String
    Dim NomFichier As String
    Dim Classeur As Workbook

    ' Spécifiez le chemin d'accès au dossier contenant les classeurs
    Chemin = ThisWorkbook.Path & "\"

    ' Vérifie si le dossier existe
    If Dir(Chemin, vbDirectory) = "" Then
        MsgBox "Le dossier spécifié n'existe pas.", vbCritical
        Exit Sub
    End If

    ' Désactive les mises à jour pour améliorer les performances
    Application.ScreenUpdating = False

    ' Boucle à travers tous les fichiers du dossier
C’est ici que ça coince.  !!!!

    NomFichier = Dir(Chemin & "*.xlsx")
    Do While NomFichier <> ""
        ' Ouvre le classeur
        Set Classeur = Workbooks.Open(Chemin & NomFichier)

        'Debug.Print Classeur.Name

        ' Ferme le classeur sans enregistrer les modifications
        Classeur.Close SaveChanges:=False
loop
end sub

End Sub

Bonjour Jeff77

Comme vous l'a indiqué Dan que je salue, merci de compléter votre profil SVP
https://www.excel-pratique.com/fr/compte/forum-profil

Avec la version indiquée dans ce fil

Cordialement

Votre problème vient du fait de votre variable chemin qui utilise le \ au lieu de / sur MAC

Faites déjà ceci :
1. votre variable Chemin n'est pas déclarée (je vois Dim chemindossier ?). Remplacez par ceci

Dim Chemin As String

2. Remplacez la ligne suivante :

Chemin = ThisWorkbook.Path & "\"

par celle-ci

Chemin = ThisWorkbook.Path & Application.PathSeparator

Ensuite refaites un test et dites moi

Si ok, lors de votre réponse pensez à


Edit : Salut Bruno !

La suite. Après vérification et mise en place de votre correction, je vois que le chemin est bon et que application.separador a mis : en lieu et place des backslashs. Donc jusque là c’est correct mais ça continue de bloquer sur NomFichier qui reste vide.
j’ai activé la fenêtre des variables locales et NomFichier n’est pas renseigné.

Le message d’erreur renvoyé est 68 Périphérique non disponible.

Merci

José

Hello Dan,

Cette erreur 68 m’a fait lire de nombreuses lignes et Microsoft n’est pas toujours très pédagogue.. Enfin je crois tenir la solution et donc je t’envoie mon code certainement perfectible.

Sub test5()'Mac recup fichiers
Dim folderPath As String
Dim wbSource As Workbook
Dim Chemin As Variant
Dim NomFichier As String

Chemin = ThisWorkbook.Path & Application.PathSeparator
NomFichier = Dir(Chemin)
Do While NomFichier <> ""
    If Not IsError(GetAttr(Chemin & NomFichier)) Then
        If InStr(NomFichier, ".xlsx") > 0 Then
        destRow = 1 ' 1ère ligne
        ' c'est donc un fichier Excel (.xlsx)
        'Je l'ouvre pour copier le tableau
        Set wbSource = Workbooks.Open(fChemin & NomFichier)
            rng.Copy Destination:=Sheets("Accueil").Range("A" & destRow)

            Debug.Print NomFichier
        End If
    End If
    NomFichier = Dir
Loop
End Sub

D’après ce que j’ai lu l’erreur peut provenir d’une confusion entre string et variant. J’ai donc mis le chemin en variant.
Et maintenant je n’ai plus l’erreur et ça fonctionne.
Je vais continuer mon programme car je veux qu’il rapatrie dans la feuille Accueil de mon classeur de départ tous les tableaux qui commencent enA1 dans toutes les feuilles de chaque classeur xlsx qu’il peut y avoir dans le dossier de départ. Je ne sais pas si je suis très clair.
je crois que la suite sera plus facile.
Merci Dan

José

Je vais continuer mon programme car je veux qu’il rapatrie dans la feuille Accueil de mon classeur de départ tous les tableaux qui commencent enA1 dans toutes les feuilles de chaque classeur xlsx qu’il peut y avoir dans le dossier de départ. Je ne sais pas si je suis très clair.

Heu non pas sûr d'avoir compris. Vous voulez mettre tous vos tableaux de fichier dans une seul feuille ou chaque feuille de tous vos fichiers dans un fichier unique ?

Pourquoi dim folderpath ?
Pourquoi plus bas vous mentionnez fchemin qui n'est pas déclaré d'ailleurs
Pourquoi wbsource et rng ?

Chemin as variant : là je n'ai pas compris car cette variable est initialisée au départ du code et ne change plus.

Je ne suis pas devant le MAC mais je vais regarder un peu plus tard

Question : vos fichiers se trouvent bien dans le même dossier que le fichier contenant la macro, je suppose ?

Oui je veux mettre tous les tableaux les uns en dessous des autres dans la même feuille du classeur où se trouve la macro.

Les fichiers se trouvent bien dans le même dossier.
je vais tenir compte de vos indications pour la suite, il est vrai que cette histoire d’erreur m’a tracassé un max et qu’à force de corríger et de réécrire il y a forcément du déchet. En tous cas encore merci et peut-être à bientôt pour la suite.
josé

Ok mais dans la ligne rng.copy, ce qui 'étonne c'est que le code copie toujours en ligne 1 de la feuille accueil...
Là le code va copier toujours en ligne 1 et non pas comme vous écrivez "en dessous les uns des autres"

le code n’est pas finalisé. Lorsqu’il va coller le tableau je lui ferai compter le nombre de ligne et au prochain tour je ferai positionner la cellule active à la ligne numéro (nombre de lignes) + 1

je lui ferai compter le nombre de ligne et au prochain tour je ferai positionner la cellule active à la ligne numéro (nombre de lignes) + 1

Changez comme ceci alors

destrow = ActiveSheet.UsedRange.Rows.Count + 1 

dans le wbsource,
- il n'y a qu'une seule feuille et on copie toutes les données de cette feuille ?
- y a-t-il des formules ?

Bonjour

En attendant votre retour sur les questions de mon post précédent, essayez ce code

Sub ListeClasseursDansDossier()
Dim Chemin
Dim NomFichier As String
Dim wbsource As Workbook
Dim destrow As Integer

' Spécifiez le chemin d'accès au dossier contenant les classeurs
Chemin = ThisWorkbook.Path & Application.PathSeparator

    ' Vérifie si le dossier existe
If Dir(Chemin, vbDirectory) = "" Then
    MsgBox "Le dossier spécifié n'existe pas.", vbCritical
    Exit Sub
End If

' Désactive les mises à jour pour améliorer les performances
Application.ScreenUpdating = False

' Boucle à travers tous les fichiers du dossier
NomFichier = Dir(Chemin) '& "*.xlsx")

Do While NomFichier <> ""
    ' Ouvre le classeur
    If NomFichier <> ThisWorkbook.Name Then
        Set wbsource = Workbooks.Open(Chemin & NomFichier)

        With ThisWorkbook.Sheets("Accueil")
            destrow = .UsedRange.Rows.Count
            If destrow > 1 Then destrow = destrow + 2
            wbsource.ActiveSheet.UsedRange.Copy .Range("A" & destrow)
        End With

        ' Ferme le classeur sans enregistrer les modifications
        wbsource.Close SaveChanges:=False
    End If
    NomFichier = Dir
Loop
End Sub

Cela suppose que :
- votre fichier contenant le code se trouve dans le même dossier que les fichiers à consulter
- tous les fichiers xlsx ont une seule feuille (cela permet de toujours être sur la bonne feuille à l'ouverture du fichier xlsx)
- les fichiers xlsx n'ont pas de formules. Le cas échéant, le copier-coller créerait des liens entre les fichiers et le fichier contenant la macro
- L'importation se fait dans la feuille Accueil de votre fichier contenant le code

NB : Pour votre profil, mettez MAC 2011 plutôt que Excel2011. Merci de votre participation

Rechercher des sujets similaires à "acceder classeur mac"