probleme de renomage de label en chaine

  • Initiateur de la discussion Initiateur de la discussion Defcom60
  • 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 !

D

Defcom60

Guest
Bonjour,

mon programme récupère une température qu'il inscrit dans un label et il effectue ca en boucle jusqu'au dernier.

j'utilise un boucle For qui commence a 1 jusqu'a 78.
mon problème est que lorsque le label n'existe pas je veut qu'il continue a boucler sur le suivant

exemple il y a un trou de 50 à 55 je veut qu'il continue en ignorant le trou.

Code:
Dim NumeroVCP As Integer, i As Long, ligne As Long, filtre As String, couleur As String, filtre2 As String
   
         
      NumeroVCP = 1
    
    Sheets(nomfichier).Select
    For NumeroVCP = 1 To 78
             Columns("A:E").Select
    Selection.AutoFilter
    filtre = "CLVCP" & Tour & Etages & Format(NumeroVCP, "000")
    Selection.AutoFilter Field:=3, Criteria1:=filtre
            Selection.AutoFilter Field:=2, Criteria1:=">" & VCPTA.CbxHeure.List(0), Operator:=xlAnd, _
        Criteria2:="<" & VCPTA.CbxHeure.List(VCPTA.CbxHeure.ListIndex + 1)

  
 
'-----------------------------------------------------------
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Rows(i).Hidden = False Then  'donc la ligne est visible
            ligne = i
            Exit For
        End If
    Next
'---------------------------------------------------------------------
    
    If Cells(ligne + 1, 5) = 0 Then GoTo line1
   
   
   If Tour = "TB" Then
        VCPTB.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
        couleur = Cells(ligne, 5)
        If couleur = "OC_NUL" Then
        VCPTB.Controls("Label" & NumeroVCP).BackColor = &HC0C000
        Else
                      VCPTB.Controls("Label" & NumeroVCP).BackColor = &H80C0FF
           End If
        
               
        Else
        VCPTA.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
        couleur = Cells(ligne, 5)
        If couleur = "OC_NUL" Then
        VCPTA.Controls("Label" & NumeroVCP).BackColor = &HC0C000
        Else
                      VCPTA.Controls("Label" & NumeroVCP).BackColor = &H80C0FF
           End If
   End If
   
   
        
'----------------------------------------------

' gestion de la barre de progression
TourTA.ProgressBar1.Visible = True
TourTA.ProgressBar1.Max = 100
TourTA.ProgressBar1.value = NumeroVCP
'---------------------------------------------
         
line1:
If ligne = 0 Then VCPTA.Controls("Label" & NumeroVCP).Caption = Err



Next NumeroVCP

autre question j'ai une feuille VCPTA ou il y a tous met label et une autre VCPTB quasi identique.
pour passer de la page VCPTA ou a VCPTB je fait un test

Code:
If Tour = "TB" Then
        VCPTB.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
        couleur = Cells(ligne, 5)
        If couleur = "OC_NUL" Then
        VCPTB.Controls("Label" & NumeroVCP).BackColor = &HC0C000
        Else
                      VCPTB.Controls("Label" & NumeroVCP).BackColor = &H80C0FF
           End If
        
               
        Else
        VCPTA.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
        couleur = Cells(ligne, 5)
        If couleur = "OC_NUL" Then
        VCPTA.Controls("Label" & NumeroVCP).BackColor = &HC0C000
        Else
                      VCPTA.Controls("Label" & NumeroVCP).BackColor = &H80C0FF
           End If
   End If

je voudrais eviter de faire des doublons y a t'il un methode plus simple.

merci
 
Re : probleme de renomage de label en chaine

Re


Une façon de faire pour la question 2

Code:
Sub test()
Dim O As OLEObject, i%
Tour = "TB"
For Each O In ActiveSheet.OLEObjects
If O.ProgId = "Forms.Label.1" Then
If O.Name Like "VCP*" Then
If Tour = "TB" Then
    'ici pour test
    MsgBox O.Name
    
'ton code à décommenter
'        O.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
'        couleur = Cells(ligne, 5)
'        If couleur = "OC_NUL" Then
'        O.Controls("Label" & NumeroVCP).BackColor = &HC0C000
'        Else
'        VCPTB.Controls("Label" & NumeroVCP).BackColor = &H80C0FF
        End If
        End If
     End If
Next
End Sub
 
Re : probleme de renomage de label en chaine

bonsoir

voici un exemple j'ai du retirer les images de fond et une partie du code car mon fichier était trop gros.

j'utilise cette procédure pour 2 feuille qui sont VCPTAA et VCPTBB qui non pas forcement le même nombre de VCP. donc s'il y a des manques de label ou de valeur ça plante.
 

Pièces jointes

Dernière modification par un modérateur:
Re : probleme de renomage de label en chaine

Re



Tu parlais de feuille et non de userform

Or les codes postés dans mes messages fonctionnent avec des controles sur des feuilles d'un classeur.

EDITION:


J'ai modifié en conséquence (ne suis pas sur que ma syntaxe soit correcte)

Voir fichier joint:

Ca fonctionne semble -t-il chez moi

Les labels sont actualisés sans bug apparent.

Je te laisse tester.

(Sauf que le userform s'affiche deux foix)

J'ai rajoué le deuxiéme userform (en copiant le premier)
 
Dernière édition:
Re : probleme de renomage de label en chaine

bonjour,

merci a tous le monde ça fonctionne Staple1600

j'ai encore une modification a faire car quand il y a pas de valeur associer a mon label il inscrit la valeur précédente et je voudrais qu'il affiche 000 ou ne pas modifier le label par defaut

car la valeur n'existe pas

autre chose

il y a t'il un moyen d'utilise un variable a la place de VCPTA. car j'ai des form qui utilise les noms suivants VCPTB,VCPB1,VCPBNORD et VCPBSUD.


en cliquant sur le bouton associer à ma tour ca me renvoie sois TA, TB B1 BNORD BSUD.

je pensé a utilisé une variable.

Nomtour = VCP & tour

mais je sais pas comment faire avec avec un controls


ce qui me donnerais

Nomtour.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)


Code:
VCPTA.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
VCPTB.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)
 
Re : probleme de renomage de label en chaine

Bonjour,

Existe t'il un méthode pour utiliser une variable à la place du nom d'une feuille.



comme dit plus haut je souhaite faire un truc de ce genre

Dim Nomfeuille

Nomfeuille = "VCP" & tour (tour est un variable du type TA,TB,B1,B2N ou B2S

Nomfeuille.Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)

ce qui m'éviterais de faire des choix avec des IF et then ou de crée un procédure avec la variable Nomfeuille

merci
 
Re : probleme de renomage de label en chaine

ca fonctionne pas .

j'ai trouver ca

Dim maVariable As String
maVariable = "UserForm1"
VBA.UserForms.Add(maVariable).Show

la commande show j'ai pas tester mais j'ai remplacer par
VBA.UserForms.Add(maVariable).Controls("Label" & NumeroVCP).Caption = Cells(ligne + 1, 5)

mais ca plante excel

je continu de cherché
 
- 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
2
Affichages
585
Retour