VBA incrémentation à partir de 0
Salut la communauté,
depuis quelques jours, je travaille sur un projet personnel qui consiste à :
à partir d'un fichiers .txt de données de voitures, extraire des listes telles que : Marque, Modèle, nom complet (marque, modèle, année), Puissance,... et créer les fichiers txt correspondants (exemple : marque.txt, modele. txt,...),
puis à les importer dans les colonnes correspondantes dans mon fichier excel.
Une fois l'importation réalisée (colonnes B à F), j'incrémente la colonne A si la cellule adjacente en B est non vide, et ceci jusqu'à la dernière cellule non vide de la colonne B. ceci afin de donner un numero à chaque cellule non vide de B. Bien évidemment, il n'y a jamais de cellule vide car lors de la création des fichiers de listes, chaque données est directement écrite à la suite des unes des autres.
Lorsque l'incrémentation est terminée, je peux faire un tri selon ce que je souhaite et ensuite exporter ma colonne A (dont les numéros ne suivent plus du fait du tri).
pour réaliser cela, j'ai déja trouvé beaucoup d'aide et j'ai déja pu écrire toute la partie d'importation des listes. j'ai pu également écrire l'incrémentation et aussi la macro pour le tri et l'exportation de la colonne A en fichier .txt
ben si déjà tout est fait, il ne reste plus rien à faire !!!
alors oui et non...
Comme je suis Super Débutant, j'ai bien fait du copié collé de ce que j'ai trouvé et j'ai adapté à ma sauce. Cependant, il me reste un petit HIC.....
L'incrémentation qui commence en A2 du fait d'une ligne d'entête(s) devrait débuter par 0. Or, tout ce que j'ai trouvé commence par 1...
J'aimerais donc de l'aide afin de pouvoir finaliser mon incrémentation (=si(B2<>"";A2=0;"" et ainsi de suite jusqu'à la dernière ligne de la colonne B non vide --> en script VBA), s'il vous plait.
et accessoirement, je suis complètement open à toutes suggestions en ce qui concerne le foutoir dans mes modules, feuilles, macro,....
Merci
Bonjour Boomers68
Bien qu'en regardant vos fichiers et votre demandez, je n'ai pas bien compris,
vous effectuez vos imports via des requêtes Power Query.
Si vous voulez mettre vos données dans une cellule spécifique, il vous faut passer par une feuille temporaire.
Vous aurez alors tout à loisir, la possibilité de copier/coller les données ou vous le souhaitez
A+
Bonjour BrnuoM45,
merci de ta réponse.
j'importe les fichiers selon la macro que j'ai enregistré directement avec excel (macro présente dans le fichier excel). après avoir essayé d'importer avec le menu import de excel, je dirais que cela ne fait pas tout à faire pareil. mais mes fichiers txt sont sur une seul "colonne" (une seule donnée par ligne et la données suivante est sur la ligne suivante) donc à l'import, les données vont directement dans les cellules sans trop de traitement je pense.
ensuite je ne souhaite pas "coller". toute cette partie de traitement est réalisée (plus ou moins bien codée...). ce qui me pose soucis, c'est l'incrémentation.
imaginons que j'importe ma liste en colonne B. ma liste fait 10 lignes. j'ai donc 10 cellules non vides à la suite.
Les cellules de ma colonne A doivent prendre des valeurs de 0 à ... (10 dans notre exemple puisque les 10 premières lignes de la colonne B sont non vides).
par conséquent voici que je souhaite avoir :
(considérent la ligne 1 comme ligne d'entête)
A2 : 0 si B2 est non vide, A3=1 si B3 non vide, A4=2 si B4 non vide...... et ainsi de suite jusqu'à la première cellule vide de la colonne B.
le nombre de case non vide de B est aléatoire et c'est important que cette case soit une variable car lorsque la colonne A est remplie selon la colonne B, toutes les cellules non vide de A sont copiées dans un fichier txt pour être traitées dans un autre dossier.
il doit donc bien y avoir autant de cellules non vide dans la colonne A que dans la colonne B (ni plus ni moins).
mais le plus important, c'est que cette incrémentation doit commencer par le 0.
tout ce que j'ai trouvé jusqu'à présent commence toujours par 1 qui je pense est une donnée intégrée dans le fonctionnement de excel.
par conséquent, dans la boucle je dois pouvoir annoncer que le chiffre de départ est 0 et non 1...
finalement je viens de trouver une solution....
Sub compteur2()
Range("A2").Select
Dim ra As Range
Dim F1 As Range
Dim DernLigne As Long
DernLigne = Range("b" & Rows.Count).End(xlUp).Row
Set F1 = Sheets("Garages").Range("b2:b" & DernLigne - 1)
Set ra = Range("A2")
ra.Value = 0
For Each c In F1
If c.Value <> "" Then
Set ra = ra.Offset(1, 0)
ra.Value = ra.Offset(-1, 0).Value + 1
Else: If c = "" Then Exit Sub
End If
Next c
End Sub