Faire une boucle sur des combobox en vba excel [Résolu]

phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 1 avril 2012 à 22:24 - Dernière réponse : phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention
- 7 avril 2012 à 10:33
Bonjour à tous,

je souhaiterai savoir si quelqu'un peut me faciliter la vie pour raccourcir mon travail...

Voila j'aimerai faire un controle sur mes combobox afin de vérifier qu'il n'y ait pas de doublon...
Moi perso j'ai fait ça...

Function DoublonSoff()

perdu = "Attention il y a un doublon avec "

If UsfFDGSoff.ComboBox3 <> "" Then

If UsfFDGSoff.ComboBox3 UsfFDGSoff.ComboBox4 Or UsfFDGSoff.ComboBox3 UsfFDGSoff.ComboBox5 Or UsfFDGSoff.ComboBox3 = UsfFDGSoff.ComboBox6 Or UsfFDGSoff.ComboBox3 = UsfFDGSoff.ComboBox7 _
Or UsfFDGSoff.ComboBox3 UsfFDGSoff.ComboBox8 Or UsfFDGSoff.ComboBox3 UsfFDGSoff.ComboBox9 Or UsfFDGSoff.ComboBox3 = UsfFDGSoff.ComboBox10 Or UsfFDGSoff.ComboBox3 = UsfFDGSoff.ComboBox11 Then
MsgBox perdu & UsfFDGSoff.ComboBox3, vbCritical + vbOKCancel, "ATTENTION DOUBLON !!!"
End If
End If

If UsfFDGSoff.ComboBox4 <> "" Then

If UsfFDGSoff.ComboBox4 UsfFDGSoff.ComboBox5 Or UsfFDGSoff.ComboBox4 UsfFDGSoff.ComboBox6 Or UsfFDGSoff.ComboBox4 = UsfFDGSoff.ComboBox7 _
Or UsfFDGSoff.ComboBox4 UsfFDGSoff.ComboBox8 Or UsfFDGSoff.ComboBox4 UsfFDGSoff.ComboBox9 Or UsfFDGSoff.ComboBox4 = UsfFDGSoff.ComboBox10 Or UsfFDGSoff.ComboBox4 = UsfFDGSoff.ComboBox11 Then
MsgBox perdu & UsfFDGSoff.ComboBox4, vbCritical + vbOKCancel, "ATTENTION DOUBLON !!!"
End If
End If

End Function

Bon je me suis arrêté au controle de 2 combobox mais en fait j'en ai 26... donc est ce que quelqu'un connait une bidouille plus rapide pour vérifier l'ensemble des combobox, sous forme de boucle par exemple...


Merci à vous, je vous souhaite une bonne journée.
Phanoulevoyou...
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 3 avril 2012 à 22:41
3
Merci
Salut Ucfoutu,

bon j'ai réfléchi sur ta proposition mais j'ai pas trouvé, par contre ça m'intéresse de savoir comment tu procèderais via With ...
De mon côté je me suis inspiré de .controls que je ne connaissais pas et que j'ai découvert, et j'ai utilisé la boucle For Next. Le résultat est le suivant et fonctionne comme je le désirais
Voici le code :

Function doublon()
Dim i, y, num As Byte


For i = 3 To 11

If UsfFDGSoff.Controls("combobox" & i) <> "" Then

If UsfFDGSoff.Controls("ComboBox" & i).Name <> "" Then
num = i + 1

For y = num To 11
If UsfFDGSoff.Controls("combobox" & i) = UsfFDGSoff.Controls("combobox" & y) Then
MsgBox "Doublon avec " & UsfFDGSoff.Controls("combobox" & y)
End If
Next y

End If
End If
Next i

End Function

Merci phanoulevoyou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de phanoulevoyou
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 3 avril 2012 à 23:02
3
Merci
voilà à main levée, ce que tu as écrit autrement (sans préjuger de la justesse de ton code) :

for i = 3 to 11
  with UsfFDGSoff.Controls("combobox" & i) ' <> "" Then
   if .txt <> "" then
     For y = i + 1 To 11
       If .text = UsfFDGSoff.Controls("combobox" & y) Then
         MsgBox "Doublon avec " & UsfFDGSoff.Controls("combobox" & y)
       End If
     Next y
   end If
  end with
next i


Au passage : cette ligne :
If UsfFDGSoff.Controls("ComboBox" & i).Name <> "" Then 

est étonnante et ne veut rien dire ! Comment un contrôle pourrai-il à la fois exister et ne pas avoir de nom ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 1 avril 2012 à 22:58
0
Merci
Bonjour,
2 pistes :
- Ouvre ton aide VBA sur l'instruction With et regarde ce que tu peux faire avec
- userform1.controls("combobox" & i) se réfère à la combobox Userform1.combobox1 si i 1, combobox2 si i 2 etc ...
A toi de t'en servir en boucles.

Travaille d'abord seul sur ces deux bases. Reviens avec ton essai, si encore en difficulté.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 3 avril 2012 à 16:23
0
Merci
ok merci de cette proposition je vais voir ce que je peux en faire, j'avais déjà essayé via une boucle mais pas sous la forme .controls("combo...).
Bonne journée
Commenter la réponse de phanoulevoyou
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 4 avril 2012 à 13:24
0
Merci
bien vu l'artiste, oui en effet cette ligne ne sert à rien du tout : If UsfFDGSoff.Controls("ComboBox" & i).Name <> "" Then

j'avais essayé un moment donné dans un code et ça me faisait une erreur mais j'ai du changer autre chose et il est vrai qu'après ton analyse et l'avoir supprimé mon code fonctionne tout de même.

Pour ce qui est de la fonction With je ne pense pas que j'aurai trouvé tout seul car cette dernière met totalement inconnu,
la preuve est que j'essaie de comprendre d'ou tu sors le .txt, je suppose qu'il correspond en gros à la valeur de la combo sous la forme du .controls ...

Dans tous les cas je te remercie d'avoir donné un peu de ton temps pour me permettre d'avancer dans mon code, je ne suis pas sur qu'un jour tu auras besoin de mon aide, ton niveau est je pense légèrement grandement supérieur au mien...

Merci également de m'avoir fait partagé la fonction with que je ne maitrise pas, il est toujours bon de connaitre plusieurs possibilités.

bonne journée, et à bientot qui sait...
S.
Commenter la réponse de phanoulevoyou
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 4 avril 2012 à 14:08
0
Merci
Bien.
Mais alors :
1) clique sur le tag "réponse acceptée" pour libérer ce sujet
2) ouvre donc vite ton aide VBA sur l'instruction With. Tu comprendras vite.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 5 avril 2012 à 08:21
0
Merci
Hello,
j'ai déjà regardé dans l'aide VBA suite à ta première réponse mais ça m'a pa plus aidé que ça...
a+

S.
Commenter la réponse de phanoulevoyou
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 avril 2012 à 08:33
0
Merci
comment cela ?
Ceci ne t'a pas paru clair ?
L'instruction With permet d'appliquer une série d'instructions à l'objet indiqué, sans qualifier à chaque fois le nom de l'objet. Par exemple, pour modifier plusieurs propriétés d'un seul objet, placez les instructions d'affectation de propriétés dans la structure de contrôle With ; vous ne faites ainsi référence qu'une seule fois à l'objet, au lieu de le faire à chaque affectation de propriété. L'exemple ci-dessous illustre l'utilisation de l'instruction With dans le cadre de l'affectation de valeurs à plusieurs propriétés d'un même objet.

With MonÉtiquette
.Height = 2000
.Width = 2000
.Caption = "Voici MonÉtiquette"
End With


où MonEtiquette est un objet et Height, Width et Caption sont des propriétés de cet objet ?

Au lieu d'avoir écrit (sans le With) :
MonÉtiquette.Height = 2000
MonÉtiquette.Width = 2000
MonÉtiquette.Caption = "Voici MonÉtiquette"

Concentre-toi un peu .


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 6 avril 2012 à 16:37
0
Merci
merci pour ta réponse qui m'a fait sourire surtout avec le concentre toi un peu...

bon je ne suis pas un crack non plus et quand je fais un code j'ai toujours un bon vieux bouquin à côté de moi pou m'aider
avec dans mes petites lignes de programmation...

Le problème pour moi et le with c'est que je ne connais pas forcément toutes les propriétés de l'objet avec lequel je travaille... même si je me donne la peine de chercher rassure toi car avant que je vienne demander de l'aide mes recherches sont nombreuses...

Puis heureusement qu'il y a des gens comme moi qui n'y connaisse rien sinon ben tu n'aurais pas d'occupation pour dépanner les autres...

Merci encore beaucoup pour ton aide...
Bon week-end de paques...

Attention aux chocolats...

S.
Commenter la réponse de phanoulevoyou
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 6 avril 2012 à 16:44
0
Merci
Puis heureusement qu'il y a des gens comme moi qui n'y connaisse rien sinon ben tu n'aurais pas d'occupation pour dépanner les autres...

Mais là ...je n'aime pas du tout car l'aide VBA était claire !
Je retiens donc et éviterai soigneusement, la prochaine fois, de te dire ce que la seule lecture de ton aide VBA t'apprenait.
Il ne faut pas confondre aide et complicité ou encouragement à ne pas étudier.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
phanoulevoyou 11 Messages postés lundi 28 mars 2011Date d'inscription 28 octobre 2012 Dernière intervention - 7 avril 2012 à 10:33
0
Merci
tu ne serais pas prof par hasard...
Bon pour ce qui est de Vba je me suis formé tout seul et en support j'ai 2 livres et internet voila, mais vu que je n'y connais rien en informatique ben parfois je ne comprends pas tout ce que je lis...ben oui je n'ai pas fait St Cyr ni des études informatiques. Donc la difficulté pour moi est de comprendre toutes ces choses qui me semble très bizarre, et comprendre la logique, en plus je parle pas anglais trop cool... bref pour ce qui est peut etre pour toi une partition de musique facile à lire et à comprendre et bien pour moi c'est du chinois...
Mais je revendique mon grand merci pour ton aide et j'apprécie que tu ne donnes pas la réponse mais que tu mettes sur la voie pour chercher...
bonne journée...
S.
Commenter la réponse de phanoulevoyou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.