Bonjour à tous,
J'ai un programme excel VBA qui marche parfaitement sur windows .
Je l'ai envoyé à quelqu'un ayant excel sur Mac et là le programme plante en pointant à la ligne d'un getopenfilesname (qui dans un userform, vient récupérer dans une liste les fichiers que l'utilisateur veut importer)
fichier_choisi = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx")
Je suppose que la procédure doit etre un peu différente sur Macintosh que sur windows ?!
Je vous envoie le code (je suis pas sur que ça puisse etre utile car le code marche bien, le problème est juste le fait je pense que la procédure doit etre différente sur Mac)
Option Explicit
Dim ligne_debut As Integer, colonne_debut As Integer
Dim ligne_encours As Long, colonne_encours As Integer
Private Sub calculer_Click()
Application.Calculate
Sheets("feuil2").Activate
End Sub
Private Sub importer_Click()
Dim fichier_choisi As String
fichier_choisi = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx")
If (LCase(fichier_choisi) <> "faux" And fichier_choisi <> "0") Then
liste_fichiers.AddItem (fichier_choisi)
End If
End Sub
Private Sub traiter_Click()
Dim nom_fichier As String, i As Integer
ligne_debut = 2: colonne_debut = 1
ligne_encours = ligne_debut
Worksheets("Feuil1").Cells.Clear
colle_entetes
For i = 0 To liste_fichiers.ListCount - 1
copiecolle (liste_fichiers.List(i))
Next i
End Sub
Private Sub colle_entetes()
Dim Plage As Range
Dim Cellule As Range
'Copier de la ligne 2 de la feuille entetes vers la ligne 3 de la feuil1
Worksheets("Feuil1").Range("A1:AAA1").Value = Worksheets("entetes").Range("A1:AAA1").Value
End Sub
Private Sub copiecolle(fichier As String)
Dim y As Long
Dim sh As Worksheet
Dim cl As Workbook
Dim rsrc As Range, rdst As Range
'ouvrir le premier fichier pour pouvoir copier coller ses données'
Set cl = Workbooks.Open(fichier)
'Pour chaque feuille du fichier à copier, trouver le nombre de lignes et jusqu'à ce que la colonne 1 contienne un vide'
For Each sh In cl.Worksheets
'Pour chaque fichier de la liste, pour chaque feuilles de ce fichier, _
pour chaque ligne à partir de la ligne 3, _
je viens copier la ligne et la coller dans la feuil1 du fichier prévisionnel '
y = 3
Do While sh.Cells(y, 1) <> ""
'ThisWorkbook.Worksheets("Feuil1").Rows(ligne_encours).Value = sh.Rows(y).Value
Set rsrc = sh.Rows(y)
Set rdst = ThisWorkbook.Worksheets("Feuil1").Rows(ligne_encours)
rsrc.Copy Destination:=rdst
ligne_encours = ligne_encours + 1 'j'incrémente ligne_encours afin que dans mon fichier prévisionnel, _
la copie continue à ce faire dans la ligne d'en dessous '
y = y + 1
Loop
Next sh
cl.Close
End Sub
Merci beaucoup