• Initiateur de la discussion Initiateur de la discussion lironik
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lironik

Guest
Bonsoir à tous
Mon problème est le suivant:
J'ai une combobox nommé "nbprestations" qui peut prendre les valeurs 0 à 12
En dessous j'ai plusieurs label nommés LabelP1, LabelP2, ..., LabelP12
De même j'ai designationP1, ..., désignationP12 et quantitéP1, ..., quantité P12 (correspondant tous deux à des combobox).
P étant la prestation, on a P1 qui est la première prestations.
Ainsi j'aimerais que lorsque nbprestations=6 (c'est un exemple), il soit affiché uniquement labelP1 à _P6, désignationP1 à _P6 et quantitéP1 à _P6.
Voilà mon code

Code:
Dim i As Integer
Dim j As Integer


i = nbprestations.Value


If j < i Then
   LabelP& j.Visible = True
   designationP& j.Visible = True
   quantitéP& j.Visible = True
  
      ElseIf j = i Then
           LabelP& j.Visible = True
           designationP& j.Visible = True
           quantitéP& j.Visible = True
   
                Else
                  LabelP& j.Visible = False
                  designationP& j.Visible = False
                  quantitéP& j.Visible = False
  
 
  
  End If

Merci
 
Re : Problème macro if

Bonsoir lironic, Jean-Marcel, le fil

..."nbprestations" qui peut prendre les valeurs 0 à 12
Tu peux aussi tester le code suivant,
si tu veux mettre à jour dynamiquement tes contrôles

Code:
Dim i%, j As Integer

i = nbprestations.Value

For j=0 to 12
   LabelP& j.Visible = (j<=i)
   designationP& j.Visible = (j<=i)
   quantitéP& j.Visible = (j<=i)
next
A plus
 
Re : Problème macro if

Bonjour le fil,

As-tu essayé de modifier le code de Soenda ainsi ?

Code:
Dim i%, j As Integer

i = nbprestations.Value

For j=0 to 12
   LabelP[COLOR="Blue"] &[/COLOR] j[COLOR="Blue"] & [/COLOR].Visible = (j<=i)
   designationP[COLOR="Blue"] &[/COLOR] j[COLOR="Blue"] & [/COLOR].Visible = (j<=i)
   quantitéP[COLOR="Blue"] & [/COLOR]j[COLOR="Blue"] & [/COLOR].Visible = (j<=i)
next

Ca fonctionne?
 
Re : Problème macro if

RE,

Effectivement,

j'ai fais, un copier/coller du code présenté par lironic...

Merci à toi Excel-lent

A plus

edit : toutefois il semblerait que les lignes du type: LabelP & j & .Visible
ne fonctionne pas
 
Dernière édition:
Re : Problème macro if

Bonsoir lironik, Jean-Marcel, soenda, Excel-lent, le Forum,

Ca ne peut pas fonctionner ainsi. L'expression :
Code:
[FONT=monospace]LabelP & j & .Visible[/FONT] = ...
ne peut être reconnue.
Il faudrait éventuellement utiliser cette syntaxe :
Code:
Controls("LabelP" & j).Visible = ...
Une autre façon de voir la procédure :
Code:
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Ctrl [COLOR=NAVY]As[/COLOR] Control
[COLOR=NAVY]Dim[/COLOR] N [COLOR=NAVY]As String
Dim[/COLOR] C [COLOR=NAVY]As Byte[/COLOR], i [COLOR=NAVY]As Byte[/COLOR]
    i = nbprestations.Value
    [COLOR=NAVY]For Each[/COLOR] Ctrl [COLOR=NAVY]In[/COLOR] Me.Controls
        [COLOR=NAVY]If[/COLOR] TypeName(Ctrl) = "Label" [COLOR=NAVY]Then
            For[/COLOR] C = 1 [COLOR=NAVY]To[/COLOR] 3
                N = Choose(C, "LabelP", "designationP", "quantitiéP")   [COLOR=GREEN]'--> Attention à l'orthographe exacte des éléments[/COLOR]
                [COLOR=NAVY]If[/COLOR] Ctrl.Name [COLOR=NAVY]Like[/COLOR] N & "*" [COLOR=NAVY]Then[/COLOR]
                    Ctrl.Visible = Val(Replace(Ctrl.Name, N, "")) < i
                    [COLOR=NAVY]Exit For
                End If
            Next[/COLOR] C
        [COLOR=NAVY]End If
    Next[/COLOR] Ctrl
Un conseil, si je peux me permettre :
Il est toujours déconseillé d'utiliser des caractères accentués dans les variables, mais aussi dans les noms d'objets : "quantitéP..." est donc à éviter. 😉

Cordialement,
 
Re : Problème macro if

Bonsoir lironic, Jean-Marcel, myDearFriend, le fil
Ca ne peut pas fonctionner ainsi.

LabelP & j & .Visible = ...
Un super MERCI à myDearFriend !

Donc je corrige le bug :

Code:
Dim i%, j As Integer

i = nbprestations.Value

For j=0 to 12
   Controls("LabelP" & j).Visible = (j<=i)
   Controls("designationP" & j).Visible = (j<=i)
   Controls("quantitéP" & j).Visible = (j<=i)
next
A plus
 
Re : Problème macro if

Merci pour ta réponse my dear friend
Elle est assez compliqué mais je vais essayer de bien la comprendre
Par contre ta formule ne marche que pour l'affichage ou non du label. Elle ne marche pas pour l'affichage ou non de la désignation et des quantités.
 
Re : Problème macro if

Re,

A y regarder de plus près, je te conseille d'utiliser le code rectifié de soenda, ne serait ce que pour une question de clarté (beaucoup moins compliqué que le mien en effet).

Cela dit, contrairement à ton constat, je te confirme que ma proposition gère bien l'affichage des controles labels nommés "LabelP...", "designationP..." ou "quantitéP..." (selon l'orthographe que tu leur donnes plus haut). Je viens de vérifier... c'est OK pour moi.

Cordialement,
 
Re : Problème macro if

Bonsoir à chacun, le Forum,
Cela ne viendrait-il pas de:
For C = 1 To 3
N = Choose(C, "LabelP", "designationP", "quantitiéP") '--> Attention à l'orthographe exacte des éléments
If Ctrl.Name Like N & "*" Then
Ctrl.Visible = Val(Replace(Ctrl.Name, N, "")) < i
Exit For
 
Re : Problème macro if

Bonsoir myDearFriend!,

Je ne comprends pas le Vba, ne parlant pas l'anglais aussi je fais peut être davantage attention à ce qui est écrit.
Tout le monde peut faire une faute de frappe, c'est si vite arrivé.
Bonne soirée et au plaisir.

Tous mes voeux vous accompagnent et mes remerciements pour la présence de chacune, chacun pour solutionner nos demandes.

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
184
Réponses
5
Affichages
927
Réponses
8
Affichages
400
Réponses
4
Affichages
742
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
296
Réponses
10
Affichages
678
Retour