samedi 6 décembre 2014

Excel et les scripts, ou comment traiter les données sans cellules...

Le problème avec Excel est qu'il gère les données qu'on lui donne à sa sauce.
Lorsque l'on intègre un fichier de données dans Excel, certains séparateurs disparaissent (surtout si on les utilisent pour ventiler les données dans des colonnes différentes de notre onglet Excel.)

Mais il est possible de faire des scripts sans passer par les cellules et donc de faire un traitement de données sans que les cellules ne soient sollicitées.

Pour cela on peut utiliser les formules Excel que l'on utilise d'habitude dans les cellules dans le code VBA. Par exemple on peu utiliser la fonction Substitute. Dans ce cas la on l'appel via la commande application.WorsksheetFunction.Substitute

Un autre avantage est que ce  type de process va être beaucoup plus rapide que de charger le fichier dans les cellules Excel pour le modifier ensuite.



Sub Maj_Fichier_Enleve_Guillemets (mon_Excel as Excel.application)
dim OFS as Object
dim mon_fichier as Object
dim fr as string
dim test as string
dim i as long

set OFS=CreateObject("Scripting.filesystemobject")

set mon_fichier = OFS.opentextfile("C:/My Program Files/data1.txt",1,0)
set obj_resultat  =OFS.createtextefile("C:/My Program Files/data2.txt")
fr = mon_fichier.readall

test = split(fr,chr(13))
for i=1 to Ubound(test)-1
      test(i)=mon_Excel.application.WorsksheetFunction.Substitute(test(i),"""","")
      test(i)=mon_Excel.application.WorsksheetFunction.Substitute(test(i),vblf,"")
      obj_restultat.write test(i) & vblf
next i
obj_resultat.close
mon_fichier.close
set obj_resultat=nothing
set mon_fichier=nothing
set OFS = nothing

end sub

Ensuite pour lancer ce process, il suffit d'appeler la fonction depuis ThisWorkbook_open.
Ainsi le traitement pourra être lancer lorsque l'on clique sur Excel.