Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

terminer une boucle for selon tableau

7 réponses
Avatar
bertrand LATOUR
Boujours a tous !

Je cherche comment réaliser une boucle for permettant d'exécuter une
suite d'opérations à chaque ligne, mais il faut que cette boucle
s'arrêt lorsqu'il n'y a plus de valeur dans la cellule correspndant la
ligne en cours et une colonne spécifique.


Merci

Bertrand

7 réponses

Avatar
Pierre Fauconnier
Bonjour

Le plus simple est d'utiliser une boucle For Each sur les cellules de la
plage

Dim Cellule as Range
For Each Cellule in range("a1:a100"
if cellule="" then exit for
...
...
Next Cellule


--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)


bertrand LATOUR wrote:
Boujours a tous !

Je cherche comment réaliser une boucle for permettant d'exécuter une
suite d'opérations à chaque ligne, mais il faut que cette boucle
s'arrêt lorsqu'il n'y a plus de valeur dans la cellule correspndant la
ligne en cours et une colonne spécifique.


Merci

Bertrand


Avatar
Frédo P.
Bonjour Bertrand
Tout dépend des opérations à réaliser

--

Fred
"bertrand LATOUR" a écrit dans le message de
news:
Boujours a tous !

Je cherche comment réaliser une boucle for permettant d'exécuter une
suite d'opérations à chaque ligne, mais il faut que cette boucle
s'arrêt lorsqu'il n'y a plus de valeur dans la cellule correspndant la
ligne en cours et une colonne spécifique.


Merci

Bertrand





Avatar
bertrand LATOUR
En fait je cherche à mettre un forme un fichier ascii par une macro
Excel.

A l'ouverture d'un doc Excel, ma macro se lance automatiquement, pour
demande quel fichier ouvrir (dans mon cas c'est un ".asc").

Le fichier souvre donc mais sur une colonne.

Je dois donc le mettre en forme : j'ai déjà qq. opérations réussies
mais le résultat n'est pas complet. (suppression de qq ligne du début
formant l'entête, conversion des données de la première colonne sur
plusieurs colonnes, changement de l'ordre des colonnes , insertion de
colonnes)
Il me manque la mise au format de certaines colonne (exemple : fois
1000 et avec 1 decimale)l'ajout de la valeur "M2" dans toute un colonne
si la ligne n'est pas vide, puis insertion du nouvel entête et fin de
doc

Puis je dois l'enregistrer au format ".mnt" et le fermer (ces deux
dernières opérations fonctionnent car reponpées sur une macro
existance).
J'ai en ma possession deux fichiers exemples, source.asc et
résultat.mnt de 15Ko et 9Ko. Je peux les envoyer par mail pour une
meilleure compréhension.

Merci


Bertrand
Avatar
Pierre Fauconnier
Ce que l'on t'a proposé ne t'aide pas ?

Pierre

bertrand LATOUR wrote:
En fait je cherche à mettre un forme un fichier ascii par une macro
Excel.

A l'ouverture d'un doc Excel, ma macro se lance automatiquement, pour
demande quel fichier ouvrir (dans mon cas c'est un ".asc").

Le fichier souvre donc mais sur une colonne.

Je dois donc le mettre en forme : j'ai déjà qq. opérations réussies
mais le résultat n'est pas complet. (suppression de qq ligne du début
formant l'entête, conversion des données de la première colonne sur
plusieurs colonnes, changement de l'ordre des colonnes , insertion de
colonnes)
Il me manque la mise au format de certaines colonne (exemple : fois
1000 et avec 1 decimale)l'ajout de la valeur "M2" dans toute un
colonne si la ligne n'est pas vide, puis insertion du nouvel entête
et fin de doc

Puis je dois l'enregistrer au format ".mnt" et le fermer (ces deux
dernières opérations fonctionnent car reponpées sur une macro
existance).
J'ai en ma possession deux fichiers exemples, source.asc et
résultat.mnt de 15Ko et 9Ko. Je peux les envoyer par mail pour une
meilleure compréhension.

Merci


Bertrand


Avatar
bertrand LATOUR
En fait je ne comprent pas bien l'instruction, ni comment la mettre en
place !
J'aurai pensé un truc du genre boucle For avec une variable i
correspondant au numéro de la ligne.
Cependant maintenant j'ai un doute ! La bouce for n'est peut être pas
le choix le plus judicieux dans mon cas !
Par exemple, je pensais utiliser le boucle pour écrire dans une case la
valeur "M2" dans la colonne A, sachant qu'il faut arrêter à la dernière
ligne pleine du tableau ( c'est un tableau importé dont la longueur est
variable)

Quel est donc le choix le plus judicieux ?

Merci

Bertrand
Avatar
Pierre Fauconnier
En fait, si j'ai bien compris, tu veux réaliser une suite d'instructions sur
chaque cellule d'une colonne jusqu'à la fin de l'importation des données.

Je pense donc que le choix le plus judicieux est de boucler sur les cellules
avec
For each Cellule in range...

Pour cela, tu dois déclarer une variable objet Cellule en tant que Range
Dim Cellule as Range
Cette ligne est à mettre au début de ta procédure, pour une meilleure
lisibilité.
Puis tu boucles avec
For each Cellule in range("a2:a" & range("a65536").End(xlUp)
...
...
Next Cellule

Les opérations à effectuer sur les cellules remplaceront les ...

En fait, tu remplaces simplement ta boucle for i ... par for each cellule in
...

L'avantage est que tu peux te servir de l'objet Cellule dans tes opérations


--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)

bertrand LATOUR wrote:
En fait je ne comprent pas bien l'instruction, ni comment la mettre en
place !
J'aurai pensé un truc du genre boucle For avec une variable i
correspondant au numéro de la ligne.
Cependant maintenant j'ai un doute ! La bouce for n'est peut être pas
le choix le plus judicieux dans mon cas !
Par exemple, je pensais utiliser le boucle pour écrire dans une case
la valeur "M2" dans la colonne A, sachant qu'il faut arrêter à la
dernière ligne pleine du tableau ( c'est un tableau importé dont la
longueur est variable)

Quel est donc le choix le plus judicieux ?

Merci

Bertrand


Avatar
Lydya
Bonjour Bertrand,

l'ajout de la valeur "M2" dans toute un colonne
si la ligne n'est pas vide, puis insertion du nouvel entête


Sub ValM2DansColA()
Dim i As Long
Dim NbLignes As Long
NbLignes = ActiveSheet.UsedRange.Rows.Count
For i = 2 To NbLignes Step 1
If Application.CountA(Rows(i)) <> 0 Then
Cells(i, "A") = [M2]
End If
Next i
[A1] = "NouvelEntete"
End Sub

Ok ?

Lydia
=========
"bertrand LATOUR" a écrit dans le message de
news:
En fait je cherche à mettre un forme un fichier ascii par une macro
Excel.

A l'ouverture d'un doc Excel, ma macro se lance automatiquement, pour
demande quel fichier ouvrir (dans mon cas c'est un ".asc").

Le fichier souvre donc mais sur une colonne.

Je dois donc le mettre en forme : j'ai déjà qq. opérations réussies
mais le résultat n'est pas complet. (suppression de qq ligne du début
formant l'entête, conversion des données de la première colonne sur
plusieurs colonnes, changement de l'ordre des colonnes , insertion de
colonnes)
Il me manque la mise au format de certaines colonne (exemple : fois
1000 et avec 1 decimale)l'ajout de la valeur "M2" dans toute un colonne
si la ligne n'est pas vide, puis insertion du nouvel entête et fin de
doc

Puis je dois l'enregistrer au format ".mnt" et le fermer (ces deux
dernières opérations fonctionnent car reponpées sur une macro
existance).
J'ai en ma possession deux fichiers exemples, source.asc et
résultat.mnt de 15Ko et 9Ko. Je peux les envoyer par mail pour une
meilleure compréhension.

Merci


Bertrand