Bonjour tout le monde ! 
 
Alors voila, je viens de finir une macro de compilation de fichier Excel et tout marche nickel !
Enfin sur mon PC :P
Mais sur mac c'est une autre affaire !
J'ai regardé sur des forums mais je n'ai pas trouvé une solution qui convenait pour mon problème alors je tente ma chance !
Voici le code complet de ma macro :
	
	
	
		
Mais sous mac il y a le problème des "ActiveX" qui sont une composante de windows et qui par conséquent ne fonctionnent pas sous mac.
Et je n'arrive pas à contourner le problème.
L'erreur à laquelle je fais face est la suivante:
 
Et le message suivant s'affiche :
"Erreur 429, un composant ActiveX ne peut pas créer d'objet"
Voila j'espère que l'un de vous sait comment contourner ce problème !
Merci d'avance
	
		
			
		
		
	
				
			Alors voila, je viens de finir une macro de compilation de fichier Excel et tout marche nickel !
Enfin sur mon PC :P
Mais sur mac c'est une autre affaire !
J'ai regardé sur des forums mais je n'ai pas trouvé une solution qui convenait pour mon problème alors je tente ma chance !
Voici le code complet de ma macro :
		Bloc de code:
	
	Option Explicit
    ' Michel STAELENS
    Dim MonRepertoire As String, onglet As String, autofin As Boolean, lignedeb As String, lignefin As String, coldeb As String, colfin As String, destinataire, i As Integer, dimTab As Integer, depuis As Integer
    Dim TabEnTete() As String
Sub select_repertoire()
    Dim Repertoire As FileDialog
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Repertoire.Show
    If Repertoire.SelectedItems.Count > 0 Then
        Range("repertoire").Value = Repertoire.SelectedItems(1)
    End If
End Sub
Sub compiler()
    ' mise en place des paramètres du programme
    MonRepertoire = Range("repertoire").Value
    Set destinataire = ActiveWorkbook
   
    coldeb = Range("coldeb").Value
    colfin = Range("colfin").Value
    lignedeb = Range("lignedeb").Value
    lignefin = Range("lignefin").Value
    onglet = Range("onglet").Value
    autofin = False
    If lignefin = "" Then autofin = True
    dimTab = 0
   
    If Range("debentete").Value <> "" Then
        dimTab = (Cells(Range("debentete").Row, Range("debentete").Column - 1).End(xlToRight).Column - Range("debentete").Column + 1)
        ReDim TabEnTete(dimTab - 1)
        For i = 0 To UBound(TabEnTete)
            TabEnTete(i) = Cells(Range("debentete").Row, Range("debentete").Column + i).Value
        Next i
    End If
       
    ' effacement des données
    Worksheets("compilation").Activate
    ActiveCell.Offset(rowOffset:=1).Activate
    Selection.ClearContents
   
    ' place le curseur au début
    Range("A2").Offset(0, dimTab).Select
    depuis = ActiveCell.Row
   
    ' lecture du répertoire
    MsgBox "Début de la compilation ..."
    ListeFichiers MonRepertoire
    MsgBox "Fin de la compilation ..."
   
End Sub
Sub ListeFichiers(Repertoire As String)
   
    If Repertoire = "" Then
        MsgBox " Choisissez le répertoire !"
        Exit Sub
    End If
   
    Dim Fso, SourceFolder, SubFolder, fichier As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(Repertoire)
       
    ' boucle sur tous les fichiers du répertoire
    For Each fichier In SourceFolder.Files
        If Right(fichier.Name, 4) = ".xls" Or Right(fichier.Name, 5) = ".xlsx" Or Right(fichier.Name, 5) = ".xlsm" Then
            If Left(fichier.Name, 2) <> "~$" Then
               
                Workbooks.Open Filename:=Repertoire & "\" & fichier.Name
                If FeuilleExiste(onglet) Then
                    Sheets(onglet).Select
               
                    ' trouve la dernière ligne
                    Range(coldeb & (lignedeb - 1)).End(xlDown).Select
                    If autofin Then lignefin = ActiveCell.Row
                    ' sélectionne la région à copier
                    Range(coldeb & lignedeb & ":" & colfin & lignefin).Select
                    ' copie la région
                    Selection.Copy
                    ' change de fichier
                    destinataire.Activate
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
                    If Range("debentete").Value <> "" Then
                        For i = 0 To UBound(TabEnTete)
                            Windows(fichier.Name).Activate
                            Range(TabEnTete(i)).Copy
                            destinataire.Activate
                            Range("A" & depuis & ":" & "A" & (depuis + lignefin - lignedeb)).Offset(0, i).Select
                            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                            Application.CutCopyMode = False
                        Next i
                    End If
                   
                End If
                ' ferme le fichier sans faire de changement
                Windows(fichier.Name).Activate
                ActiveWindow.Close
                ' place le curseur sous les données
                destinataire.Activate
                Cells(depuis + lignefin - lignedeb + 1, dimTab + 1).Select
                ' sauvegarde cette ligne pour recopie des en-têtes en colonne
                depuis = ActiveCell.Row
                If Range("pasapas").Value = "OUI" Then
                    MsgBox ("Fin de recopie de """ & fichier.Name & """ : " & lignefin - lignedeb + 1 & " lignes recopiées !")
                End If
                    Else
                        MsgBox "La feuille """ & onglet & """ du fichier """ & fichier.Name & """ est nouvelle et ne sera pas reprise !"
                    End If
       
        End If
    Next fichier
    ' appel récursif pour les sous-répertoires
    For Each SubFolder In SourceFolder.subfolders
        ListeFichiers SubFolder.Path
    Next SubFolder
    
End Sub
Function FeuilleExiste(NomFeuille As String) As Boolean
    On Error GoTo Err_FeuilleExiste
    FeuilleExiste = False
    FeuilleExiste = Not ActiveWorkbook.Worksheets(NomFeuille) Is Nothing
Err_FeuilleExiste:
End Function
	Mais sous mac il y a le problème des "ActiveX" qui sont une composante de windows et qui par conséquent ne fonctionnent pas sous mac.
Et je n'arrive pas à contourner le problème.
L'erreur à laquelle je fais face est la suivante:
 Et le message suivant s'affiche :
"Erreur 429, un composant ActiveX ne peut pas créer d'objet"
Voila j'espère que l'un de vous sait comment contourner ce problème !
Merci d'avance
	
	
