For each combobox

Le
stephanie thibault
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.
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
MichD
Le #23330641
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.
stephanie thibault
Le #23330701
On 3 mai, 12:27, "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.



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
MichD
Le #23330691
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"
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
LSteph
Le #23330771
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.
MichD
Le #23330751
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"
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
stephanie thibault
Le #23330991
On 3 mai, 12:51, "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$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"


> 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
MichD
Le #23331141
"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"
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"


> 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
DanielCo
Le #23331431
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"
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"


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
Publicité
Poster une réponse
Anonyme