Page 1 sur 1
[..] Correction de fichier excel
Posté : ven. 01 mai 2015 13:14
par pelotegelee
Bonjour a tous
j'ai parcouru le tuto et f1 sur les commandes a utiliser sur excel :
le temps d'apprendre tester et d'appliquer : je voudrais avoir un "aperçu" de commandes car ca me parait compliqué.
j'ai 2 fichiers ;
je reçois export.xls figé 21 colonnes ,16 lignes, hebdomadaire , .
exemple des colonnes(lettres simplifient les noms) :arrivée, bonus , c, d, e, f, g, h, i, j, k ..etc...avec contenus type aphanumerique divers.
garder les colonnes arrivée, d, g,f,j ,i , la colonne f: contenu a corriger exemple alpha = 12345 pour ne garder que les chiffres
intervertir et regrouper g,i,arrivée,d,f,j .
insérer dans total.xls apres le précédent copié collé .
c'est possible?
merci d'avance
Re: [..] Correction de fichier excel
Posté : ven. 01 mai 2015 22:40
par walkson
Bonsoir,
Difficile de vous répondre en l'état ! sans exemple !
Ma première question venue à l'esprit a été "est ce nécessaire de passer par autoit ?" surtout pour reproduire du VBA.
Après coup, je me suis laissé tenter mais par Autoit, pas par VBA Excel.
A défaut d'informations, je présuppose que les données en Excel se situe en "A1" et sans titre. Et aussi, total.xls contient 16 colonnes et 16 lignes, suite au regroupement des colonnes. Regroupement effectué dans la première colonne.
Le principe est simple. Je lis Excel et j'enregistre les données dans un array. Au passage, j' effectue les différentes opérations (concaténer et autre). Et enfin, écrire le résultat dans total.xls.
Par rapport à votre demande, le fichier de départ n'est pas modifié et la concaténation est effectuée dans l'ordre les colonnes.
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
#include <Excel.au3>
$oExcel = ObjGet(@ScriptDir & "\ export.xls")
Local $array[16][21];Array qui réceptionne les données
$cumul = ""
For $i = 1 To 16 ;boucle les lignes
For $y = 1 To 21 ;boucle les colonnes
$val = $oExcel.Sheets(1).Cells($i,$y).Value
If $y = 7 Or $y = 9 Or $y = 1 Or $y = 4 Or $y = 6 Or $y = 10 Then
If $y = 6 Then $val = StringRegExpReplace($val, "\D", "");ne garde que les nombres sur F
$cumul &= $val & " " ;concatene les colonnes G I A D F J
$array[$i - 1][0] = $cumul ;le résultat écrit dans la première colonne
Else
$array[$i - 1][$y - 1] = $val;array commence à 0 donc $i - 1
EndIf
Next
$cumul = ""
Next
$oExcel.Close
_ArrayDisplay($array)
Local $array1[16][16]
$x = 0
For $i = 0 To 15 ;supprime les 5 colonnes vides
For $y = 0 To 20
$val = $array[$i][$y]
If $val > "" Then
$array1[$i][$x] = $array[$i][$y]
$x += 1
EndIf
Next
$x = 0
Next
_ArrayDisplay($array1)
Local $oAppl = _Excel_Open()
Local $sWorkbook = @ScriptDir & "\total.xls"
Local $oWorkbook = _Excel_BookOpen($oAppl, $sWorkbook, Default, Default)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $array1, "A1")
_Excel_BookSave($oWorkbook)
_Excel_Close($oAppl)
Re: [..] Correction de fichier excel
Posté : ven. 01 mai 2015 22:52
par pelotegelee
Merci! vous me donnez une 1 ere trame c'est deja beaucoup.
je reviens rapidement vers le forum de maniere plus explicite si je rame.
bon 1er mai !