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

Problème de for next

8 réponses
Avatar
Pierre F.
Bonjour à toutes et à tous

J'ai une petite macro qui compte des voyelles dans une liste de mots et
qui "ajuste" le nombre de caractères de chaque mot en éliminant les
signes spéciaux (tiret, espace, apostrophe)
Les résultats sont ensuite placés dans les colonnes C et E

Je souhaiterais y ajouter un test à la 2e ligne pour éviter qu'elle
fasse le boulot sur des lignes vides... mais elle plante justement à cet
endroit: le message est "Next sans For".

------------------------------------
For q = To 950
--> If Cells(q, 1) = "" Then Next q

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

Next q
-------------------------------------

merci pour votre aide.

Cordialement,
Pierre F.

8 réponses

Avatar
Ellimac
Bonjour,

Peut être essayer un GOTO
For q = To 950
--> If Cells(q, 1) = "" Then GoTo Suite
Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres
Suite:
Next q


Camille

"Pierre F." a écrit dans le message de news:
c355$48ca3b3d$55da2b33$
Bonjour à toutes et à tous

J'ai une petite macro qui compte des voyelles dans une liste de mots et
qui "ajuste" le nombre de caractères de chaque mot en éliminant les signes
spéciaux (tiret, espace, apostrophe)
Les résultats sont ensuite placés dans les colonnes C et E

Je souhaiterais y ajouter un test à la 2e ligne pour éviter qu'elle fasse
le boulot sur des lignes vides... mais elle plante justement à cet
endroit: le message est "Next sans For".

------------------------------------
For q = To 950
--> If Cells(q, 1) = "" Then Next q

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

Next q
-------------------------------------

merci pour votre aide.

Cordialement,
Pierre F.



Avatar
Jpmonnier
Bonjour,
Remplace
For q = To 950
par
For q = 1 To 950

If Cells(q, 1) = "" Then Next q
par
If Cells(q, 1) <> "" Then

ça devrait aller
--
Cordialement

"Pierre F." a écrit dans le message de
news:c355$48ca3b3d$55da2b33$
Bonjour à toutes et à tous

J'ai une petite macro qui compte des voyelles dans une liste de mots et
qui "ajuste" le nombre de caractères de chaque mot en éliminant les signes
spéciaux (tiret, espace, apostrophe)
Les résultats sont ensuite placés dans les colonnes C et E

Je souhaiterais y ajouter un test à la 2e ligne pour éviter qu'elle fasse
le boulot sur des lignes vides... mais elle plante justement à cet
endroit: le message est "Next sans For".

------------------------------------
For q = To 950
--> If Cells(q, 1) = "" Then Next q

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

Next q
-------------------------------------

merci pour votre aide.

Cordialement,
Pierre F.


Avatar
Pierre F.
Ellimac a écrit :

Peut être essayer un GOTO



For q = To 950
--> If Cells(q, 1) = "" Then GoTo Suite
Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres
Suite:
Next q



Ça le fait !!!
Mille mercis.

Cordialement,
Pierre F.
Avatar
Pierre F.
Jpmonnier a écrit :
Bonjour,
Remplace
For q = To 950
par
For q = 1 To 950



OK c'était un erreur de "transcription"

If Cells(q, 1) = "" Then Next q
par
If Cells(q, 1) <> "" Then

ça devrait aller



La macro s'arrête: "Next sans For"

Que devrais-je mettre à la suite du Then ?

Cordialement,
Pierre F.
Avatar
Mishell
Bonjour

For q = 1 To 950
If Cells(q, 1) <> "" Then

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â", "ù",
"û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

End If
Next q

Mishell

"Pierre F." wrote in message
news:c0252$48ca9e27$55da2b33$
Jpmonnier a écrit :
Bonjour,
Remplace
For q = To 950
par
For q = 1 To 950



OK c'était un erreur de "transcription"

If Cells(q, 1) = "" Then Next q
par
If Cells(q, 1) <> "" Then

ça devrait aller



La macro s'arrête: "Next sans For"

Que devrais-je mettre à la suite du Then ?

Cordialement,
Pierre F.



Avatar
Misange
Bonjour
essaie cela :

For q = 1 To 950
If Cells(q, 1) <> "" Then

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

> For Compteur = 1 To Len(Mot)
> Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
> Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
> "ù", "û", "à", "ü", "ë"
> NombreVoyelle = NombreVoyelle + 1
> End Select
> Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
> Case " ", "-", "'", ".", ","
> NBlettres = NBlettres - 1
> End Select
> Next
>
> Cells(q, 3) = NombreVoyelle
> Cells(q, 5) = NBlettres
>
> Next q

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Pierre F. a écrit :
Bonjour à toutes et à tous

J'ai une petite macro qui compte des voyelles dans une liste de mots et
qui "ajuste" le nombre de caractères de chaque mot en éliminant les
signes spéciaux (tiret, espace, apostrophe)
Les résultats sont ensuite placés dans les colonnes C et E

Je souhaiterais y ajouter un test à la 2e ligne pour éviter qu'elle
fasse le boulot sur des lignes vides... mais elle plante justement à cet
endroit: le message est "Next sans For".

------------------------------------



-------------------------------------

merci pour votre aide.

Cordialement,
Pierre F.


Avatar
Pierre F.
Mishell a écrit :
Bonjour

For q = 1 To 950
If Cells(q, 1) <> "" Then

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â", "ù",
"û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

End If
Next q




OK; ç'est impec aussi. Merci!

J'avais en fait oublié le "end if"

Cordialement,
Pierre F.
Avatar
Pierre F.
Misange a écrit :

essaie cela :

For q = 1 To 950
If Cells(q, 1) <> "" Then

Mot = Cells(q, 2)
NombreVoyelle = 0
NBlettres = Len(Mot)

For Compteur = 1 To Len(Mot)
Select Case Mid(Mot, Compteur, 1) 'compte les voyelles
Case "a", "e", "i", "o", "u", "y", "é", "è", "ê", "î", "ô", "â",
"ù", "û", "à", "ü", "ë"
NombreVoyelle = NombreVoyelle + 1
End Select
Select Case Mid(Mot, Compteur, 1) 'décompte les espaces vides
Case " ", "-", "'", ".", ","
NBlettres = NBlettres - 1
End Select
Next

Cells(q, 3) = NombreVoyelle
Cells(q, 5) = NBlettres

Next q




OK; il faut juste encore ajouter un end if en bas, avant le next q et ça
marche super.

Merci à toutes et à tous.

Cordialement,
Pierre F.