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

Invalid Next controle variable reference

4 réponses
Avatar
YeTi
Bonjour à tous,

J'ai un problème avec un Next apparemment...
Ce a quoi j'aimerais arriver c'est que si une cellule de la colonne C = ü,
alors on la copie et on la colle seulement si une cellule de la ligne 2
(entre la 15ème et la 20ème colonne) est vide.

Lors que j'exécute avec la macro ci-dessous, un bug apparaît "Invalid Next
controle variable reference" et me souligne le "Next r".

Un petit peu d'aide svp?

Merci d'avance!
YeTi


For r = 2 To 50 'row
For pc = 15 To 20 'paste in column

If Cells(r, 3) = "ü" Then
Cells(r, 1).Copy
End If

If Cells(2, pc) = "" Then
Cells(2, pc).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False

End If
Next r
Next pc

4 réponses

Avatar
Daniel.C
Bonjour.
Sans regarder ton code plus avant, les boucles ne doivent pas se croiser, la
seconde doit rester à l'intérieur. Si tu écris :

For r = 2 To 50 'row
For pc = 15 To 20 'paste in column

tu dois mettre en retour de boucles :

Next pc
Next r

--
Cordialement.
Daniel
"YeTi" a écrit dans le message de news:

Bonjour à tous,

J'ai un problème avec un Next apparemment...
Ce a quoi j'aimerais arriver c'est que si une cellule de la colonne C = ü,
alors on la copie et on la colle seulement si une cellule de la ligne 2
(entre la 15ème et la 20ème colonne) est vide.

Lors que j'exécute avec la macro ci-dessous, un bug apparaît "Invalid Next
controle variable reference" et me souligne le "Next r".

Un petit peu d'aide svp?

Merci d'avance!
YeTi


For r = 2 To 50 'row
For pc = 15 To 20 'paste in column

If Cells(r, 3) = "ü" Then
Cells(r, 1).Copy
End If

If Cells(2, pc) = "" Then
Cells(2, pc).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse

End If
Next r
Next pc


Avatar
YeTi
Arf...

Merci beaucoup!
J'ai néanmoins tjrs un petit soucis.

Ma boucle copie donc tous les noms qui ont un "ü" dans la colonne 3 et les
colle dans la plage O2-S2.

Le problème c'est que si y a un seul nom qui a "ü", il est collé sur toute
la plage, alors que j'aimerais qu'il ne soit collé que dans la première
cellule (O2). Idem lorsqu'il y a plusieurs "ü", il colle le dernier nom sur
toute la plage au lieu d'un nom par cellule.

Comment remédier à ca?

Merci de votre aide

YeTi


"Daniel.C" wrote:

Bonjour.
Sans regarder ton code plus avant, les boucles ne doivent pas se croiser, la
seconde doit rester à l'intérieur. Si tu écris :

For r = 2 To 50 'row
For pc = 15 To 20 'paste in column

tu dois mettre en retour de boucles :

Next pc
Next r

--
Cordialement.
Daniel
"YeTi" a écrit dans le message de news:

> Bonjour à tous,
>
> J'ai un problème avec un Next apparemment...
> Ce a quoi j'aimerais arriver c'est que si une cellule de la colonne C = ü,
> alors on la copie et on la colle seulement si une cellule de la ligne 2
> (entre la 15ème et la 20ème colonne) est vide.
>
> Lors que j'exécute avec la macro ci-dessous, un bug apparaît "Invalid Next
> controle variable reference" et me souligne le "Next r".
>
> Un petit peu d'aide svp?
>
> Merci d'avance!
> YeTi
>
>
> For r = 2 To 50 'row
> For pc = 15 To 20 'paste in column
>
> If Cells(r, 3) = "ü" Then
> Cells(r, 1).Copy
> End If
>
> If Cells(2, pc) = "" Then
> Cells(2, pc).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks _
> :úlse, Transpose:úlse
>
> End If
> Next r
> Next pc





Avatar
Daniel.C
Essaie comme ça :

Sub test()
Dim c As Range, ResAdr As String
Dim i As Integer
i = 15
Set c = [C2:C50].Find("ü", , , xlWhole)
If Not c Is Nothing Then
ResAdr = c.Address
Do
Cells(2, i) = Cells(c.Row, 1)
If i = 20 Then Exit Sub
i = i + 1
Set c = [C2:C50].FindNext(c)
Loop Until c.Address = ResAdr
End If
End Sub

Daniel
"YeTi" a écrit dans le message de news:

Arf...

Merci beaucoup!
J'ai néanmoins tjrs un petit soucis.

Ma boucle copie donc tous les noms qui ont un "ü" dans la colonne 3 et les
colle dans la plage O2-S2.

Le problème c'est que si y a un seul nom qui a "ü", il est collé sur toute
la plage, alors que j'aimerais qu'il ne soit collé que dans la première
cellule (O2). Idem lorsqu'il y a plusieurs "ü", il colle le dernier nom
sur
toute la plage au lieu d'un nom par cellule.

Comment remédier à ca?

Merci de votre aide

YeTi


"Daniel.C" wrote:

Bonjour.
Sans regarder ton code plus avant, les boucles ne doivent pas se croiser,
la
seconde doit rester à l'intérieur. Si tu écris :

For r = 2 To 50 'row
For pc = 15 To 20 'paste in column

tu dois mettre en retour de boucles :

Next pc
Next r

--
Cordialement.
Daniel
"YeTi" a écrit dans le message de news:

> Bonjour à tous,
>
> J'ai un problème avec un Next apparemment...
> Ce a quoi j'aimerais arriver c'est que si une cellule de la colonne C =
> ü,
> alors on la copie et on la colle seulement si une cellule de la ligne 2
> (entre la 15ème et la 20ème colonne) est vide.
>
> Lors que j'exécute avec la macro ci-dessous, un bug apparaît "Invalid
> Next
> controle variable reference" et me souligne le "Next r".
>
> Un petit peu d'aide svp?
>
> Merci d'avance!
> YeTi
>
>
> For r = 2 To 50 'row
> For pc = 15 To 20 'paste in column
>
> If Cells(r, 3) = "ü" Then
> Cells(r, 1).Copy
> End If
>
> If Cells(2, pc) = "" Then
> Cells(2, pc).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
> SkipBlanks _
> :úlse, Transpose:úlse
>
> End If
> Next r
> Next pc







Avatar
YeTi
Merci Daniel.C

Je vais tenter d'adapter ton code car j'ai quelque peu modifié le miens
(voir sujet "Problème pour copier dans boucle")

Merci beaucoup pour ton aide.
A+

YeTi

"Daniel.C" wrote:

Essaie comme ça :

Sub test()
Dim c As Range, ResAdr As String
Dim i As Integer
i = 15
Set c = [C2:C50].Find("ü", , , xlWhole)
If Not c Is Nothing Then
ResAdr = c.Address
Do
Cells(2, i) = Cells(c.Row, 1)
If i = 20 Then Exit Sub
i = i + 1
Set c = [C2:C50].FindNext(c)
Loop Until c.Address = ResAdr
End If
End Sub

Daniel
"YeTi" a écrit dans le message de news:

> Arf...
>
> Merci beaucoup!
> J'ai néanmoins tjrs un petit soucis.
>
> Ma boucle copie donc tous les noms qui ont un "ü" dans la colonne 3 et les
> colle dans la plage O2-S2.
>
> Le problème c'est que si y a un seul nom qui a "ü", il est collé sur toute
> la plage, alors que j'aimerais qu'il ne soit collé que dans la première
> cellule (O2). Idem lorsqu'il y a plusieurs "ü", il colle le dernier nom
> sur
> toute la plage au lieu d'un nom par cellule.
>
> Comment remédier à ca?
>
> Merci de votre aide
>
> YeTi
>
>
> "Daniel.C" wrote:
>
>> Bonjour.
>> Sans regarder ton code plus avant, les boucles ne doivent pas se croiser,
>> la
>> seconde doit rester à l'intérieur. Si tu écris :
>>
>> For r = 2 To 50 'row
>> For pc = 15 To 20 'paste in column
>>
>> tu dois mettre en retour de boucles :
>>
>> Next pc
>> Next r
>>
>> --
>> Cordialement.
>> Daniel
>> "YeTi" a écrit dans le message de news:
>>
>> > Bonjour à tous,
>> >
>> > J'ai un problème avec un Next apparemment...
>> > Ce a quoi j'aimerais arriver c'est que si une cellule de la colonne C =
>> > ü,
>> > alors on la copie et on la colle seulement si une cellule de la ligne 2
>> > (entre la 15ème et la 20ème colonne) est vide.
>> >
>> > Lors que j'exécute avec la macro ci-dessous, un bug apparaît "Invalid
>> > Next
>> > controle variable reference" et me souligne le "Next r".
>> >
>> > Un petit peu d'aide svp?
>> >
>> > Merci d'avance!
>> > YeTi
>> >
>> >
>> > For r = 2 To 50 'row
>> > For pc = 15 To 20 'paste in column
>> >
>> > If Cells(r, 3) = "ü" Then
>> > Cells(r, 1).Copy
>> > End If
>> >
>> > If Cells(2, pc) = "" Then
>> > Cells(2, pc).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
>> > SkipBlanks _
>> > :úlse, Transpose:úlse
>> >
>> > End If
>> > Next r
>> > Next pc
>>
>>
>>