Problème d'activeX avec mac

Bonjour,

Je me permets de vous demander conseil car j'ai une erreur 429 "un composant ActiveX ne peut pas créer l'objet" lorsque j'exécute mon macro.

Il s'agit d'un macro pour ma thèse de médecine, qui a été codé pour PC mais que je dois utiliser sur mac (avec Excel 2019).

Sub Ouverture_RhinoValve()
'
' Ouverture_RhinoValve Macro

mypath = ActiveWorkbook.Path
mysource = "/Users/pierregagnieur/Documents/Médecine Internat/Articles/Article valve rhinomano/source"

ChDir mysource
varfgen = InputBox(4, "Entrer le nom géné du fichier", 0)
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileexists(mysource & "\" & varfgen & ".csv") Then

'
Workbooks.OpenText Filename:= _
mysource & "\" & varfgen & ".csv" _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Range("A1:C2001").Select
Selection.Copy
Windows("data.xlsm").Activate
Range("A2").Select
ActiveSheet.Paste
End If

Cells(1, 25) = varfgen

' save en xlsm

ActiveWorkbook.SaveAs Filename:=mysource & "\backup\" & varfgen & "_AUC.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

End Sub

Avez vous une idée de ce que je dois changer pour que cela fonctionne sur mac SVP ?

En vous remerciant d'avance pour votre aide et restant à votre disposition pour tout renseignement complémentaire,

Bien à vous.

Pierre

Bonjour,

Le filesystemobject n'est pas disponible sur mac.

Vous pouvez cependant utiliser la commande Dir.

Sub Ouverture_RhinoValve()

mysource = "/Users/pierregagnieur/Documents/Médecine Internat/Articles/Article valve rhinomano/source"

varfgen = InputBox(4, "Entrer le nom géné du fichier", 0)
If Dir(mysource & "/" & varfgen & ".csv") <> "" Then
'suite code
end if

'ou If Dir(mysource & "/" & varfgen & ".csv") = "" Then exit sub
    'suite code

Cdlt,

Bonjour, merci beaucoup pour cette réponse rapide.

J'ai testé la nouvelle commande, mais le rapporteur d'erreur me dit qu'il n'y a pas de bloc if

J'ai donc retiré le End If (noté en orange ci dessous)

Sub Ouverture_RhinoValve()

mysource = "/Users/pierregagnieur/Documents/Médecine Internat/Articles/Article valve rhinomano/source"

varfgen = InputBox(4, "Entrer le nom géné du fichier", 0)
If Dir(mysource & "/" & varfgen & ".csv") <> "" Then
'suite code
end if


'ou If Dir(mysource & "/" & varfgen & ".csv") = "" Then exit sub
'suite code

La boite de dialogue me demande ensuite de renseigner le nom du fichier csv à rechercher.

capture d e cran 2020 12 04 a 12 16 03

J'écris donc "Pre_D_01" (qui se trouve dans le dossier intitulé "source", dont le chemin est indiqué au début)

Mais ensuite, j'ai cette erreur :

capture d e cran 2020 12 04 a 12 10 58

Avez vous une idée svp ?

Merci, bien à vous.

Pierre

EDIT : en remplaçant le "\" par "/" dans cette ligne :

Workbooks.OpenText Filename:= _
mysource & "\" & varfgen & ".csv" _

, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Range("A1:C2001").Select
Selection.Copy
Windows("data.xlsm").Activate
Range("A2").Select
ActiveSheet.Paste
End If

Cela semble avoir réglé ce problème.

Maintenant, j'ai ce message :

capture d e cran 2020 12 04 a 12 36 31

Avez vous une idée s'il vous plait ?

Sur quelle ligne porte l'erreur ? A priori sur la ligne workbooks.opentext ?

Cela voudrait dire que vous avez passé la recherche. Je ne connais pas cette méthode. Je vous propose dans un premier temps de vérifier avec

workbooks.open filename:=mysource & "/" & varfgen & ".csv"

Puis dans un second, d'essayer ainsi :

'remplacement par xlMacintosh
Workbooks.OpenText Filename:= _
mysource & "/" & varfgen & ".csv" _
, Origin:=xlMacintosh, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True

edit : en effet, sur mac ce sont des slashs et non des anti-slash.

Cdlt,

Comme je vous ai dit, je ne connais pas cette méthode et je ne peux pas avoir d'idée si je ne sais pas sur quelle ligne porte l'erreur.

Mais déjà, j'essaierais ceci :

activeworkbook.activesheet.Range("A1:C2001").Copy workbooks("data.xlsm").sheets("nomdelafeuilledestination").Range("A2")
'ou bien activeworkbook.activesheet.Range("A1:C2001").Copy thisworkbook.sheets("nomdelafeuilledestination").Range("A2")

Bonjour

Si vous cliquez sur deboguage, le code s'arrete sur quelle ligne ?

Bien sûr, excusez moi.

Voici où se trouve l'erreur :

capture d e cran 2020 12 04 a 12 49 09

Ben cela c'est normal...windows sur MAC... vous allez faire sortir Steve Jobs de sa tombe...

Bon mettez plutot ceci --> Workbooks("Data.xlsm").Activate ou modifiez le code

Range("A1:C2001").Select
Selection.Copy
Windows("data.xlsm").Activate
Range("A2").Select
ActiveSheet.Paste

par ceci

Range("A1:C2001").Copy Workbooks("data.xlsm").sheets("nomdelafeuille").Range("A2")

Dites moi car je n'ai pas testé sur MAC

Edit : attention car vous devrez modifier la ligne en dessous aussi -->

Workbooks("data.xlsm")
    .sheets("nomdelafeuille").cells(1,25) =varfgen
    .saveas.....
End with

Haha désolé pour cette ineptie !

J'ai bien tout remplacé.

Maintenant j'ai ceci :

capture d e cran 2020 12 04 a 13 03 28

Avec ceci dans le débogueur :

capture d e cran 2020 12 04 a 13 09 16

Oui normal j'ai omis de mettre le nom de la feuille. J'ai corrigé les deux codes dans mon post précédent... meaculpa...

Merci beaucoup Dan !! Ca avance bien !

Maintenant il reste 2 petits problèmes

Le premier concerne la sauvegarde du fichier (et donc les dernières lignes du code) :

capture d e cran 2020 12 05 a 10 47 39 capture d e cran 2020 12 05 a 10 48 01

Et enfin, le dernier problème (plus important puisqu'il fausse tous les calculs...) : je ne sais pas pourquoi mais Excel intègre une ligne vide entre chacune de mes valeurs (voir ci dessous)

capture d e cran 2020 12 05 a 10 49 59

Alors que cela ne le fait pas sur le PC, et que les valeurs ne sont pas classées comme cela dans le fichier de base en .CSV (elles sont uniquement séparées par des virgules, voir ci dessous)

capture d e cran 2020 12 05 a 10 54 37

En espérant que cela ne soit pas trop complexe 😳😳

Merci et bonne journée !

Pierre

Bonjour

Le premier concerne la sauvegarde du fichier (et donc les dernières lignes du code) :

Pas facile cela...

Pourquoi avez-vous un 0 derrière l'extension XLSM ?
Le fichier est en mode partagé avec d'autres personnes ou vous êtes le seul à l'utiliser ?

Et enfin, le dernier problème (plus important puisqu'il fausse tous les calculs...) : je ne sais pas pourquoi mais Excel intègre une ligne vide entre chacune de mes valeurs (voir ci dessous)

Là il faudrait voir les options lors de la conversion CSV vers excel.
Le mieux serait d'utiliser l'enregistreur automatique d'excel et faire la conversion CSV. Ensuite voir ce qu'excel MAC vous renvoie comme instruction afin de comparer les deux lignes workbook.opentext.filename (windows et MAC)

Bonjour Dan,

Merci pour votre réponse.

Malheureusement, aucune idée pour ce 0 qui apparait après l'extension... Toutefois, après avoir fermé le message d'erreur, mon ficher s'est renommé comme il le fallait et je peux l'enregistrer manuellement sans problème. Je pense donc traiter ce problème par le mépris, même s'il rajoute 2/3 manips.

Pour le problème de la conversion CSV vers Excel, j'ai épluché les options dans "Préférences", mais je n'ai rien trouvé qui mentionne cette conversion.

Quand j'ouvre directement le ficher .CSV, cela ouvre une seule colonne, avec la série de 3 chiffres séparés par des virgules.

Quand j'ouvre le fichier .CSV en passant par "nouveau classeur Excel", "données", "ouvrir un fichier texte" et que je sélectionne le .CSV, on me demande de choisir quelques options :

capture d e cran 2020 12 07 a 18 25 18 capture d e cran 2020 12 07 a 18 25 39 capture d e cran 2020 12 07 a 18 25 58

Après, ce qui est étonnant c'est que lorsqu'on utilise le macro sur PC, il n'inclue aucune ligne supplémentaire entre les données... Et je ne vois pas ce qui pourrait changer cela dans le code du macro 😭

Bonjour,

Pouvez-vous essayer ainsi :

Workbooks.OpenText Filename:= mysource & "/" & varfgen & ".csv", _
Origin:=xlMacintosh, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True

ou carrément en omettant le paramètre Origin, qui est peut-être la cause de l'insertion de lignes intermédiaires :

Workbooks.OpenText Filename:= mysource & "/" & varfgen & ".csv", _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
Comma:=True, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True

Cdlt,

Ca y est !! Cela semble marcher !!!

J'ai du tout reprendre depuis le début car le code qui marchait hier ne marchait de nouveau plus aujourd'hui...

J'ai re-tenté avec les explications de 3GB (message de vendredi, 12h42) et cela a supprimé les espaces et a permis a la macro de charger toutes les données du CSV et de faire tous les calculs correctement !!!

Voici le code final qui marche :

Sub Ouverture_RhinoValve()
'
' Ouverture_RhinoValve Macro

mypath = ActiveWorkbook.Path
mysource = "/Users/pierregagnieur/Documents/Médecine Internat/Articles/Article valve rhinomano/source"

varfgen = InputBox(4, "Entrer le nom géné du fichier", 0)
If Dir(mysource & "/" & varfgen & ".csv") <> "" Then
'suite code

'ou If Dir(mysource & "/" & varfgen & ".csv") = "" Then exit sub
'suite code

'
Workbooks.OpenText Filename:= _
mysource & "/" & varfgen & ".csv" _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
ActiveWorkbook.ActiveSheet.Range("A1:C2001").Copy ThisWorkbook.Sheets("Feuil1").Range("A2")
End If

Cells(1, 25) = varfgen

' save en xlsm

ActiveWorkbook.SaveAs Filename:=mysource & varfgen & "_AUC.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False


End Sub

Vous n'imaginez pas la joie... un immense merci 🍾🍾🍾

En ce qui concerne la sauvegarde du fichier (2 dernières lignes du code), je pense que je vais abandonner, car le fichier qui est enregistré est "juste" le .CSV rangé en colonnes, et non le tableau de la macro avec données du CSV remplies et exploitées... Mais je peux me contenter de récupérer les résultats des calculs dans la macro même je suppose !

Une excellente soirée à vous et chapeau bas pour votre générosité et votre disponibilité !

EDIT : si cela est plus "lisible pour vous" ! = code définitif qui marche

capture d e cran 2020 12 07 a 23 02 13

Merci pour ce retour sympathique !

Vous savez, il y a un ruban au-dessus de l'espace commentaire, sur lequel vous pourrez trouver un logo avec des balises </> pour y écrire du code .

Sinon, pour l'enregistrement, regardez quand même ce lien : https://docs.microsoft.com/fr-fr/office/vba/api/excel.xlfileformat qui liste les valeurs possibles du paramètre fileformat de la méthode Saveas https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.saveas. Il est question de CSV, de CSV macintosh...

Bonne soirée,

Cdlt,

Bonjour

Désolé de ne pas être revenu hier soir... mais comme 3GB me suivait, vous avez la solution. Toutefois je m'étonne que le xlMSDOS est lu par excel MAC.

Après, ce qui est étonnant c'est que lorsqu'on utilise le macro sur PC, il n'inclue aucune ligne supplémentaire entre les données... Et je ne vois pas ce qui pourrait changer cela dans le code du macro

Comme je vous ai dit avant, utilisez l'enregistreur de macro automatique lorsque vous faites la conversion du fichier CSV. Une fois terminé, arrêtez l'enregistreur et aller voir le code dans l'éditeur VBA. Cela vous permettra de vérifier ce qui est commun à windows et MAC.

Pour la sauvegarde, essayez comme ceci -->

ActiveWorkbook.SaveAs Filename:=mysource & varfgen & "_AUC.xlsm"

Cordialement

Rechercher des sujets similaires à "probleme activex mac"