Problème de for next

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Ellimac
Le #16792771
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." 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.



Jpmonnier
Le #16793051
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." 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.


Pierre F.
Le #16793041
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.
Pierre F.
Le #16796601
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.
Mishell
Le #16797041
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." 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.



Misange
Le #16797021
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.


Pierre F.
Le #16797521
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.
Pierre F.
Le #16797861
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.
Publicité
Poster une réponse
Anonyme