Créer un code compatible mac et pc avec demande pour sélectionner un fichie

Bonjour à tous,

Je me tape la tête contre les murs avec un sujet qui pourtant a dû être traité mille fois :
je souhaite écrire un code où l'utilisateur choisis un fichier qui sera utilisé comme source de données

Le code doit-être compatible mac et PC. Je développe sur Mac.

Mes chemins même s'il ne sont pas vide ne sont pas reconnus.

Qui peut m'orienter svp ?

merci à tous

Bonjour

Mettez déjà le code que vous avez sous MAC. On adaptera pour Windows ensuite

Mes chemins même s'il ne sont pas vide ne sont pas reconnus.

C'est à dire ?

Avez-vous plusieurs chemins sous MAC ?
Le fichier à ouvrir est-il dans le même répertoire que votre fichier excel contenant les macros ?

Sinon sous MAC pour ouvrir la boite de dialogue, essayez avec cette commande

Application.Dialogs(xlDialogOpen).Show

Crdlt

Bonjour,

Merci pour votre retour.

Je précise que le fichier à choisir n'est pas forcément dans le même répertoire que le fichier porteur de la macro.

Alors j'en suis là dans mon code. Une fois le fichier cible ouvert on veut prendre les données de la feuille 1 à partir de la ligne 20 et les coller dans un nouveau classeur.

J'arrive à choisir le fichier sous mac mais c'est sous windows que ça ne fonctionne pas étonnamment.
ça ne marche sur la ligne où je vérifie si le fichier a bien été sélectionné.

Merci pour vos lumières

Sub TESTOUVRIR()
    Dim wbSource As Workbook
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim wbDest As Workbook
    Dim sourceFilePath As String
    Dim lastRow As Long
    Dim targetRange As Range

    ' Création d'un nouveau fichier pour les données copiées
    Set wbDest = Workbooks.Add
    Set wsDest = wbDest.Sheets(1)

    #If Mac Then

    ' Utilisation d'AppleScript pour obtenir le chemin du fichier sur Mac
    sourceFilePath = MacScript("return posix path of (choose file of type {""org.openxmlformats.spreadsheetml.sheet"", ""com.microsoft.excel.xls"", ""com.microsoft.excel.xlsx"", ""com.microsoft.excel.xlsm""} with prompt ""Sélectionnez un fichier Excel"")")

    ' Vérifier si un fichier a été sélectionné
    If sourceFilePath = "" Then
        MsgBox "Aucun fichier sélectionné.", vbExclamation
        Exit Sub
    End If

    ' Afficher le chemin du fichier pour le débogage
    MsgBox "Chemin du fichier sélectionné : " & sourceFilePath

    ' Ouverture du fichier source
    On Error Resume Next
    Set wbSource = Workbooks.Open(sourceFilePath)
    On Error GoTo 0

    ' Vérifiez que le fichier source a été ouvert correctement
    If wbSource Is Nothing Then
        MsgBox "Erreur lors de l'ouverture du fichier source. Chemin du fichier : " & sourceFilePath, vbCritical
        Exit Sub
    End If

    #Else

    With Application.fileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = False
            .Show
            If .SelectedItems.Count = 0 Then
            MsgBox "aucun fichier sélectionné"
            Exit Sub
            Else

            Application.Workbooks.Open .SelectedItems(1)

            End If

        End With
Set wbSource = ActiveWorkbook

            ' Vérifier si un fichier a été sélectionné
        If VarType(sourceFilePath) = vbBoolean And sourceFilePath = False Then
            MsgBox "Aucun fichier sélectionné.", vbExclamation
            Exit Sub
        End If

   #End If

    ' Définir la feuille source (vous pouvez changer l'index ou le nom de la feuille si nécessaire)
    Set wsSource = wbSource.Sheets(1)

    ' Vérifiez que la feuille source a été définie correctement
    If wsSource Is Nothing Then
        MsgBox "Erreur lors de l'accès à la feuille source.", vbCritical
        wbSource.Close SaveChanges:=False
        Exit Sub
    End If

    ' Trouver la dernière ligne de données dans la colonne A
    On Error Resume Next
    lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row
    On Error GoTo 0

    MsgBox lastRow

    If lastRow < 20 Then
        MsgBox "Il n'y a pas de données à copier à partir de la ligne 20.", vbExclamation
        wbSource.Close SaveChanges:=False
        Exit Sub
    End If

    ' Copier les données des colonnes A et B à partir de la ligne 20
    On Error Resume Next
    Set targetRange = wsSource.Range("A20:B" & lastRow)
    targetRange.Copy Destination:=wsDest.Range("A1")
    If Err.Number <> 0 Then
        MsgBox "Erreur lors de la copie des données : " & Err.Description, vbCritical
        wbSource.Close SaveChanges:=False
        Exit Sub
    End If
    On Error GoTo 0

    ' Fermer le fichier source sans enregistrer les modifications
    wbSource.Close SaveChanges:=False

    ' Message de confirmation
    MsgBox "Les données ont été copiées avec succès dans un nouveau fichier.", vbInformation
End Sub

Bonjour

Je précise que le fichier à choisir n'est pas forcément dans le même répertoire que le fichier porteur de la macro.

Désolé de mon retour tardif

Je ne vois aucun souci pour ouvrir le fichier sous Windows avec le code que vous postez
Si je sélectionne sous Windows, le fichier s'ouvre bien et cette partie de code est correcte

Quel est le souci que vous rencontrez et à quelle ligne dans le code

Crdlt

Rechercher des sujets similaires à "creer code compatible mac demande selectionner fichie"