Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Probleme rapide (erreur de syntaxe)

  • Initiateur de la discussion Gordon
  • Date de début
G

Gordon

Guest
Bonjour a tous

Alors je résume mon problème.
Je veux automatiser la séparation d'un fichier *.csv de 436 valeurs en 3 pages d'un nombre de colonnes choisi par l'utilisateur sous excel.
Pour cela j'ai besoin dans un module donné de faire référence à un autre module (module4) pour automatiser le remplissage d'un array() avec une série de boucles comme celle qui suit :

For i = 1 To CStr(Cells(7, 3))
Module4.line(63+i) = "1, _"
Next i

Seulement il ya une erreur dans la ligne 2 de ma boucle.
Alors si quelqu'un pouvait me donner la bonne syntaxe, ce serait sympa.
Merci d'avance !
 
Z

Zon

Guest
Salut,

Pas trés clair ce que tu demandes "pour automatiser le remplissage d'un array()" tu peux passer par une fonction qui te renvoie un tableau.
Sinon pour mofifier des lignes dans un module dasn le classeur actif

with activeworkbook.vbproject.vbcomponents("Module4").codemodule

For i = 1 To Cells(7, 3)
.deletelines 63+i
.insertlines 63+i,"1, _"
next i

Mets un exemple ...

A+++

Lien supprimé
 
G

Gordon

Guest
Salut Zon et merci,

En tt cas bien que mon problème n'ait pas été posé le plus clairement possible, ta réponse m'aide fortement.
En fait dans ce fameux module4, j'arrive a la ligne 64 à la fin de cette commande : ("alldatas1" est la première feuille dans laquelle je sépare mes 436 valeurs)( C3 la directory) (F3 le nom du fichier)

Sheets("alldatas1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" + Format(Sheets("feuil1").Range("C3").Value) + Format(Sheets("feuil1").Range("F3").Value) + ".csv", Destination:=Range("A2"))
.Name = "datas"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False 'line 50
.TextFileColumnDataTypes = Array(1, _




Maintenant dans un autre module "module6" j'ai besoin de remplir l'array de mon "module4". Et c'est la que j'utilise ta commande :

With ActiveWorkbook.VBProject.vbcomponents("Module4").codemodule

For i = 1 To Cells(7, 3)
.deletelines 63 + i
.insertlines 63 + i, "1, _"
Next i

End With


(puis je fais une derniere ligne pour fermer l'array)
Ici le contenu des cellules (7,3) vaut 62 (nobmre choisi par l'utilisateur entre 1 et 256).


Nouveau problème : On ne peut faire que 25 retours à la ligne.


(en core un truc , en accumulant plusieurs boucles d'affilée pour remplir mon module4, l'array obtenu doit contenir toutes les données suivantes:

(ceci est juste un modèle, je sais pas pourquoi, mais les endroits occupés paar les "1" correspondent aux valeurs parmi les 436 existantes qu'il faut mettre dans la feuille ("alldatas1")

Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 _
, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 _
, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 _
, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 _
, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9 _
, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, _
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9)


Voila pour l'exemple que tu m'as demandé.
Merci de ton aide, et si t'es arrivé jusque là, et que t'as le temps de me répondre, je serais ravi de savoir si t'as une idée pour le nouveau problème.
Aller merci encore!
 
Z

Zon

Guest
Salut,

Je trouve ta démarche bizarre, il faudrait ton fichier CSV et une exemple de classeur pour me faire une idée. Si cela passe pas sur le forum envoies le moi par courriel.

A+++
 

Discussions similaires

Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…