XL 2016 Exécuter un traitement sur plusieurs colonnes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
369
Réponses
2
Affichages
468
Retour