IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bug checkbox en fonction de text box


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 1
    Par défaut Bug checkbox en fonction de text box
    Bonjour,

    J'ai userform qui a des textbox et j'ai quand je clic sur les nom des salariés dans une listbox, je peux définir par petit groupe (de 3personnes) si le groupe de salariés en question est concerné ou pas par les compétences ou non.

    Jusque là tout va bien.

    Sauf que si je ne le sélectionne que 2 salariés, ça ne fonctionne plus, il me détecte un bug et sur ligne en jaune la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Sheets("Base").Range("DH" & CL3.Row) = "NC"
    Voici le code entier de la chekbox : (qui fonctionne quand j'ai sélectionné 3 salariés et qui ne fonctionne pas avec moins.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub ChkB01_Click()
        'CONCERNÉ/NON-CONCERNÉ 01
    Dim CL1 As Range
    Dim CL2 As Range
    Dim CL3 As Range
    Dim Dlig As Integer
     
    Sheets("Base").Select
    Dlig = Cells(Rows.Count, "A").End(xlUp).Row
     
    Set CL1 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM1.Value, LookIn:=xlValues, LookAt:=xlWhole)
    Set CL2 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM2.Value, LookIn:=xlValues, LookAt:=xlWhole)
    Set CL3 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM3.Value, LookIn:=xlValues, LookAt:=xlWhole)
     
     
       If ChkB01.Value = True Then
          Sheets("Base").Range("DH" & CL1.Row) = "NC"
          Sheets("Base").Range("DH" & CL2.Row) = "NC"
          Sheets("Base").Range("DH" & CL3.Row) = "NC"
     
       Else
          Sheets("Base").Range("DH" & CL1.Row).ClearContents
          Sheets("Base").Range("DH" & CL2.Row).ClearContents
          Sheets("Base").Range("DH" & CL3.Row).ClearContents
     
       End If
    End Sub
    Merci par avance =)
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    De grâce, utilisez les balises CODE quand vous postez du code !!!
    Et évitez de joindre vos fichiers dès le 1er post : une question bien posée vaut un million de fichiers.

    Quant à votre problème, je n'ai pas regardé de trop près, mais à vue de nez, si vous ne spécifiez pas correctement votre 3ème plage de données (puisque vous n'entrez pas de 3ème utilisateur) mais que vous essayez d'utiliser cette plage comme si de rien n'était, il ne faut pas vous étonner d'obtenir des erreurs...

    Cdt

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, je partage l'avis de @Ben L.
    Regardez la valeur de CL3 si vous en sélectionnez trois et ensuite si vous en sélectionnez deux, vous aurez vite compris.
    Si vous souhaitez par moment en sélectionner plus ou moins que trois il faudra un codage adapté avec If etc ou select case
    Enfin moi ce que j'en dit?

    Cordialement

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    perso quand je regarde le code dans le UserForm je me demande bien ce que tu veux faire avec
    tu a un tableau structuré tout devrait être plus facile et je suis quasiment certain que tu n'a pas besoins de tout ces codes et évènement alambiqués

    si tu nous expliquais en terme clair tes intentions on pourrait y voir un peu plus clair nous aussi

    la en l'état je ferme ton fichier et c'est tout

    pour en citer un par exemple
    que viens faire ce "End If a la fin de cet evenement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox1_click()
      ColRecherche = 7
      clé = Me.ComboBox1: n = 0
      Dim Tbl()
      For i = 1 To UBound(TBlBD)
        If TBlBD(i, ColRecherche) Like clé Then
            n = n + 1: ReDim Preserve Tbl(1 To UBound(TBlBD, 2), 1 To n)
            For k = 1 To UBound(TBlBD, 2): Tbl(k, n) = TBlBD(i, k): Next k
         End If
      Next i
      If n > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
        End If
      End Sub
    tu semble ignorer les type de codage de cette instruction

    condition if lineaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if blabla then   0=la tete a toto ' pas de "end if " !!!!
    condition If indenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if blabla then
    0=la tete a toto
    end if
    et c'est pas la pire méprise dans ton code
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Affichage sur une text box en fonction combobox
    Par lucieaup dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/09/2013, 15h46
  2. Changer la couleur d'une texte box en fonction du temps
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/03/2013, 22h39
  3. Afficher un nombre de checkbox en fonction d'un input type text
    Par feldi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/09/2012, 11h40
  4. gros bug dans GIMP, fonction texte
    Par laurentSc dans le forum Imagerie
    Réponses: 1
    Dernier message: 25/10/2009, 18h09
  5. Réponses: 4
    Dernier message: 23/06/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo