XL 2016 Exécuter un traitement sur plusieurs colonnes

Jey_vba

XLDnaute Nouveau
Bonjour à tous,

Je suis nouvelle sur ce forum et d'ailleurs nouvelle aussi dans l'utilisation de vba.
J'aimerai avoir votre aide pour une instruction que je n'arrive pas à appliquer sur plusieurs colonnes.
Je m'explique, j'ai créé via vba un fichier texte que j'alimente avec les informations de mon classeur excel.
Exemple : dans mon code ci dessous , la 1 ère ligne sera : !data
La deuxième ligne ainsi que les suivantes sera égale à : certains paramètres par défaut (définis dans un onglet Param) puis la cellule A2 /B1/ puis B3 pour la valeur.
Puis l'instruction passe à la ligne suivante.
Voir coi dessous une copie d'écran du tableau sous excel:
upload_2019-2-14_17-8-26.png


Puis ici une copie des premières lignes générées dans mon fichier txt

upload_2019-2-14_17-9-43.png


Jusque là tout va bien, l'intégralité des lignes sont bien écrites.
Mais je souhaiterai passer à la colonne suivante afin de changer de compte ( ligne 1) et de valeurs du coup.
Mais je ne sais pas comment utiliser les boucles.
Dans ma ligne cx (instruction vb), la variable "a" doit correspondre aux valeurs des colonnes B2 puis B3,...
Je ne vois pas comment passer de la colonne 1 à 2 , puis la suivante via une boucle.

J'ai un doute sur le fait que ma demande soit clair, mais mille mercis d'avance pour votre aide ou vos interrogations.
Je vous joins mon fichier excel.

Bon aprème
 

Pièces jointes

  • test_vb.xlsm
    29.2 KB · Affichages: 6

Paf

XLDnaute Barbatruc
Bonjour,

un essai à tester. j'ai remplacé la boucle do ... loop par une boucle for ... next

VB:
Sub Fichier_Txt()
Dim s, pd, vw, e, a, icp, i As Variant
Dim y As Integer, j As Integer, i As Long
Dim Colonne As Long
s = Range("Scénario").Value
y = Range("Année").Value
pd = Range("Periode").Value
vw = Range("View").Value
icp = Range("Icp").Value

Application.ScreenUpdating = False
  
Const mode_acces = 8
Nom_fichier = "C:\CVA_Input\" & "CVA_Input_" & Sheets("Param").Range("E2") & "_" & Sheets("Param").Range("E3") & ".dat"
Set acces_fichier = CreateObject("Scripting.filesystemobject")
Set ecriture = acces_fichier.OpenTextFile(Nom_fichier, mode_acces, True)
  
'creation de la premiere ligne
ecriture.writeline ("!DATA")
  
With Worksheets("Format_Input_HFM")
For j = 2 To 21 ' de la colonne B à U
  For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row ' de la ligne 2 à la dernière
  e = .Cells(i, 1) ' A2 puis A3, A4 ...
  v = .Cells(i, j) 'B2,B3.... puis C2,C3...jusqu'à U2,U3 ...
  LigneCx = s & ";" & y & ";" & pd & ";" & vw & ";" & e & ";EURO;" & a & ";" & icp & ";" & "siege" & ";" & "[None]" & ";" & "[None]" & ";" & "[None]" & ";" & v
  ecriture.writeline (LigneCx)
  Next i
Next j
End With

ecriture.Close
MsgBox ("Fichier Load CVA généré")
Application.ScreenUpdating = True

End Sub

à noter dans LigneCx, la variable a n'est jamais initialisée.
 

Discussions similaires

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki