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

For each combobox

8 réponses
Avatar
stephanie thibault
Bonjour,

J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais

For j=3D1 to 6
i =3D 2
If "ComboBox" & j <> "vide" Then
Do While Range("B" & i).Value <> ""
If "ComboBox" & j.Value <> Range("B" & i) Then
Range("B" & i).EntireRow.Select
Rows(Selection.Row).Delete shift:=3DxlUp
i =3D i - 1
End If
i =3D i + 1
Loop
End If
Next j

Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.

Merci


Mais =E7a ne marche pas.

8 réponses

Avatar
MichD
Bonjour,

Pourquoi ne pas énoncer clairement ce que tu veux faire ?
Quel résultat veux-tu obtenir ?



MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


Bonjour,

J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais

For j=1 to 6
i = 2
If "ComboBox" & j <> "vide" Then
Do While Range("B" & i).Value <> ""
If "ComboBox" & j.Value <> Range("B" & i) Then
Range("B" & i).EntireRow.Select
Rows(Selection.Row).Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
End If
Next j

Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.

Merci


Mais ça ne marche pas.
Avatar
stephanie thibault
On 3 mai, 12:27, "MichD" wrote:
Bonjour,

Pourquoi ne pas énoncer clairement ce que tu veux faire ?
Quel résultat veux-tu obtenir ?

MichD
--------------------------------------------
"stephanie thibault"  a écrit dans le message de groupe de discussion :


Bonjour,

J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais

For j=1 to 6
i = 2
If "ComboBox" & j <> "vide" Then
    Do While Range("B" & i).Value <> ""
        If "ComboBox" & j.Value <> Range("B" & i) Then
        Range("B" & i).EntireRow.Select
        Rows(Selection.Row).Delete shift:=xlUp
        i = i - 1
        End If
        i = i + 1
    Loop
End If
Next j

Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.

Merci

Mais ça ne marche pas.



Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j
Avatar
MichD
Et que veux-tu faire avec la sélection...
Il n'est pas nécessaire de sélectionner une plage de cellules
pour la transformer avec une macro. Encore faut-il que tu
énonces clairement ce que tu veux faire...

Remplace "NomDeLaFeuille" par le nom de la feuille de ton application.

Si ce code est mis dans un module standard, tu remplaces le mot "Me" par
le nom (propriété Name) du formulaire(userform)

With Worksheets("NomDeLaFeuille")
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j


MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:27, "MichD" wrote:
Bonjour,

Pourquoi ne pas énoncer clairement ce que tu veux faire ?
Quel résultat veux-tu obtenir ?

MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


Bonjour,

J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais

For j=1 to 6
i = 2
If "ComboBox" & j <> "vide" Then
Do While Range("B" & i).Value <> ""
If "ComboBox" & j.Value <> Range("B" & i) Then
Range("B" & i).EntireRow.Select
Rows(Selection.Row).Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
End If
Next j

Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.

Merci

Mais ça ne marche pas.



Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j
Avatar
LSteph
Bonjour,

Le Select est parfaitement inutile dans ce cas(comme prersque toujours
d'ailleurs)
[B1].entirerow.delete

mettre j au lieu de j.value et ainsi:

if Me.controls("Combobox" & j) <> [B1] Then

--
LSteph

C'est le "ComboBox" & j.value qui buggue.
Avatar
MichD
Dans la présentation de ma procédure, j'ai omis une ligne :
Pour pouvoir sélectionner une cellule dans une feuille,
cette feuille doit-être la feuille active à l'écran

With Worksheets("NomDeLaFeuille")
.Activate '<=====la ligne oubliée.
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j



MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : ipomav$vhu$

Et que veux-tu faire avec la sélection...
Il n'est pas nécessaire de sélectionner une plage de cellules
pour la transformer avec une macro. Encore faut-il que tu
énonces clairement ce que tu veux faire...

Remplace "NomDeLaFeuille" par le nom de la feuille de ton application.

Si ce code est mis dans un module standard, tu remplaces le mot "Me" par
le nom (propriété Name) du formulaire(userform)

With Worksheets("NomDeLaFeuille")
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j


MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:27, "MichD" wrote:
Bonjour,

Pourquoi ne pas énoncer clairement ce que tu veux faire ?
Quel résultat veux-tu obtenir ?

MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


Bonjour,

J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais

For j=1 to 6
i = 2
If "ComboBox" & j <> "vide" Then
Do While Range("B" & i).Value <> ""
If "ComboBox" & j.Value <> Range("B" & i) Then
Range("B" & i).EntireRow.Select
Rows(Selection.Row).Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
End If
Next j

Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.

Merci

Mais ça ne marche pas.



Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j
Avatar
stephanie thibault
On 3 mai, 12:51, "MichD" wrote:
Dans la présentation de ma procédure, j'ai omis une ligne :
Pour pouvoir sélectionner une cellule dans une feuille,
cette feuille doit-être la feuille active à l'écran

With Worksheets("NomDeLaFeuille")
    .Activate  '<=====la ligne oubliée.
    For j = 1 To 6
        If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
            .Range("B1").EntireRow.Select
        End if
    Next
next j

MichD
--------------------------------------------
"MichD"  a écrit dans le message de groupe de discussion : ipomav$vh.

Et que veux-tu faire avec la sélection...
Il n'est pas nécessaire de sélectionner une plage de cellules
pour la transformer avec une macro. Encore faut-il que tu
énonces clairement ce que tu veux faire...

Remplace "NomDeLaFeuille" par le nom de la feuille de ton application.

Si ce code est mis dans un module standard, tu remplaces le mot "Me" par
le nom (propriété Name) du formulaire(userform)

With Worksheets("NomDeLaFeuille")
    For j = 1 To 6
        If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
            .Range("B1").EntireRow.Select
        End if
    Next
next j

MichD
--------------------------------------------
"stephanie thibault"  a écrit dans le message de groupe de discussion :


On 3 mai, 12:27, "MichD" wrote:



> Bonjour,

> Pourquoi ne pas énoncer clairement ce que tu veux faire ?
> Quel résultat veux-tu obtenir ?

> MichD
> --------------------------------------------
> "stephanie thibault"  a écrit dans le message de groupe de discussi on :
>

> Bonjour,

> J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
> mes combobox.
> Je fais

> For j=1 to 6
> i = 2
> If "ComboBox" & j <> "vide" Then
>     Do While Range("B" & i).Value <> ""
>         If "ComboBox" & j.Value <> Range("B" & i) Then
>         Range("B" & i).EntireRow.Select
>         Rows(Selection.Row).Delete shift:=xlUp
>         i = i - 1
>         End If
>         i = i + 1
>     Loop
> End If
> Next j

> Je pense que je peux utiliser for each, mais je ne sais pas m'en
> servir.

> Merci

> Mais ça ne marche pas.

Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j



"NomdelaFeuille", je peux mettre "userform1" ? Parce que mes combobox
sont sur un userform.
Ou alors je mets le nom de la feuille où il y a mes données ?

Mais ça ne marche pas, j'utilise office 2007, c'est pareil ?

Merci
Avatar
MichD
"NomDeLaFeuille" = Nom de l'onglet de la feuille où sont tes données entre guillemets

Cette procédure suppose que tes combobox ont comme propriété "Name"
Combobox1 , Combobox2 ... Combobox6

Si leur nom est différent, c'est sûr que cela ne fonctionnera pas !

Si tu respectes ce qui précède, qu'est-ce qui ne fonctionne pas ?
Quelle ligne est mise en surbrillance lorsque l'exécution s'arrête ?

'-------------------------------
With Worksheets("NomDeLaFeuille")
.Activate '<=====la ligne oubliée.
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j
'-------------------------------


MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:51, "MichD" wrote:
Dans la présentation de ma procédure, j'ai omis une ligne :
Pour pouvoir sélectionner une cellule dans une feuille,
cette feuille doit-être la feuille active à l'écran

With Worksheets("NomDeLaFeuille")
.Activate '<=====la ligne oubliée.
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j

MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : ipomav$

Et que veux-tu faire avec la sélection...
Il n'est pas nécessaire de sélectionner une plage de cellules
pour la transformer avec une macro. Encore faut-il que tu
énonces clairement ce que tu veux faire...

Remplace "NomDeLaFeuille" par le nom de la feuille de ton application.

Si ce code est mis dans un module standard, tu remplaces le mot "Me" par
le nom (propriété Name) du formulaire(userform)

With Worksheets("NomDeLaFeuille")
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j

MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:27, "MichD" wrote:



> Bonjour,

> Pourquoi ne pas énoncer clairement ce que tu veux faire ?
> Quel résultat veux-tu obtenir ?

> MichD
> --------------------------------------------
> "stephanie thibault" a écrit dans le message de groupe de discussion :
>

> Bonjour,

> J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
> mes combobox.
> Je fais

> For j=1 to 6
> i = 2
> If "ComboBox" & j <> "vide" Then
> Do While Range("B" & i).Value <> ""
> If "ComboBox" & j.Value <> Range("B" & i) Then
> Range("B" & i).EntireRow.Select
> Rows(Selection.Row).Delete shift:=xlUp
> i = i - 1
> End If
> i = i + 1
> Loop
> End If
> Next j

> Je pense que je peux utiliser for each, mais je ne sais pas m'en
> servir.

> Merci

> Mais ça ne marche pas.

Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j



"NomdelaFeuille", je peux mettre "userform1" ? Parce que mes combobox
sont sur un userform.
Ou alors je mets le nom de la feuille où il y a mes données ?

Mais ça ne marche pas, j'utilise office 2007, c'est pareil ?

Merci
Avatar
DanielCo
Bonjour,
Pour compléter, si les nom des comboboxes ne commence pas par
"combobox", on peut utiliser :

For Each c In Me.Controls
If TypeOf c Is ComboBox Then
If c.Value <> [B1].Value Then
Range("B1").EntireRow.Delete
Exit For
End If
End If
Next

Daniel


"NomDeLaFeuille" = Nom de l'onglet de la feuille où sont tes données entre
guillemets

Cette procédure suppose que tes combobox ont comme propriété "Name"
Combobox1 , Combobox2 ... Combobox6

Si leur nom est différent, c'est sûr que cela ne fonctionnera pas !

Si tu respectes ce qui précède, qu'est-ce qui ne fonctionne pas ?
Quelle ligne est mise en surbrillance lorsque l'exécution s'arrête ?

'-------------------------------
With Worksheets("NomDeLaFeuille")
.Activate '<=====la ligne oubliée.
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j
'-------------------------------


MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:51, "MichD" wrote:
Dans la présentation de ma procédure, j'ai omis une ligne :
Pour pouvoir sélectionner une cellule dans une feuille,
cette feuille doit-être la feuille active à l'écran

With Worksheets("NomDeLaFeuille")
.Activate '<=====la ligne oubliée.
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j

MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion :
ipomav$

Et que veux-tu faire avec la sélection...
Il n'est pas nécessaire de sélectionner une plage de cellules
pour la transformer avec une macro. Encore faut-il que tu
énonces clairement ce que tu veux faire...

Remplace "NomDeLaFeuille" par le nom de la feuille de ton application.

Si ce code est mis dans un module standard, tu remplaces le mot "Me" par
le nom (propriété Name) du formulaire(userform)

With Worksheets("NomDeLaFeuille")
For j = 1 To 6
If Me.Controls("ComboBox" & j).value <> .Range("B1") Then
.Range("B1").EntireRow.Select
End if
Next
next j

MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :


On 3 mai, 12:27, "MichD" wrote:



Bonjour,



Pourquoi ne pas énoncer clairement ce que tu veux faire ?
Quel résultat veux-tu obtenir ?



MichD
--------------------------------------------
"stephanie thibault" a écrit dans le message de groupe de discussion :

Bonjour,



J'ai 6 combobox dans un userform, et j'aimerais faire une boucle sur
mes combobox.
Je fais



For j=1 to 6
i = 2
If "ComboBox" & j <> "vide" Then
Do While Range("B" & i).Value <> ""
If "ComboBox" & j.Value <> Range("B" & i) Then
Range("B" & i).EntireRow.Select
Rows(Selection.Row).Delete shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
End If
Next j



Je pense que je peux utiliser for each, mais je ne sais pas m'en
servir.



Merci



Mais ça ne marche pas.



Peu importe en fait ce qu'il y a dans la boucle, en plus simple, pour
mes 6 box, si la valeur de ma box est différente de B1, alors je
sélectionne la ligne.
C'est le "ComboBox" & j.value qui buggue.

For j = 1 To 6
If "ComboBox" & j.value <> Range("B1") Then
Range("B1").EntireRow.Select
next j



"NomdelaFeuille", je peux mettre "userform1" ? Parce que mes combobox
sont sur un userform.
Ou alors je mets le nom de la feuille où il y a mes données ?

Mais ça ne marche pas, j'utilise office 2007, c'est pareil ?

Merci