Association

Résolu
Bonjour
Pour une association , j'ai réaliser en VBA une UserBox avec TextBox et CheckBox pour la saisie des adhérents et le cochage par CheckBox des différentes activités. La saisie et la mise en place des différentes valeur ce passe très bien. mes codes fonctionne. Par contre, comme il y a de l'ordre de 400 adhérents, la recherche et la lecture des différents ligne est très difficile, surtout avec plus de 20 colonnes.
Aussi, j'ai commencer à coder pour que 1 click sur une cellule "nom" ou "prénom" affiche dans les TextBox les éléments de l'identité de l'adérents, cela fonctionne. Par contre, je n'arrive pas à Cocher les CheckBox en fonction de la valeur "1" ou "" des cellules correspondant au différentes case à cocher.
Quelqu'un pourrais peut être me conseiller sur mon code. je doit faire une erreur, mais laquelle.

    'n° téléphone fixe
    ADHERENT.TextBox6 = Cells(Target.Row, 6)
    'n° téléphone portable
    ADHERENT.TextBox7 = Cells(Target.Row, 7)
    ' adresse mail
    ADHERENT.TextBox8 = Cells(Target.Row, 8)
    
    ' cocher les chexbox si les cellules =1
    'carte Adh?rents
    If Cells(N_ligne, 9) = "1" Then
        CheckBox19 = True
    Else
        CheckBox19 = False
    End If
    'Danse salon
    If Cells(N_ligne, 10) = "1" Then
        CheckBox16 = True
    Else
        CheckBox16 = False
    End If


voici un petit bout de mon code.
Merci d'avance

GaGeF

4 réponses

  1. Bonjour,

    Si tu mets "1" (entre guillemets) c'est du texte, si tu mets 1 (sans guillemets) c'est un nombre.
    Essaie sans guillemets, peut-être.

    Cordialement
    1. Ou bien :
      If Cells(N_ligne, 9).Text = "1" Then
    2. milles excuse mais cela ne fonctionne pas.
      mais grand Merçi
  2. Modérateur
    Bonjour
    D'où vient ta variable N_ligne ?

    Ne serait ce pas plutôt Target.Row comme le code au dessus ?
    1. Bonjour à tous.
      merci de vos réponses et notamment à toi jordane45. Je m'excuse de ne t'avoir répondu plus tôt, mais ces derniers temps, j'ai été fort prise avec les assos. La, je peu revenir un peut.
      Aussi je joint le code total. Ce code se trouve dans la feuille ADHERENTS qui est la feuilles principales. Et donc je veux ouvrir l'UserBox avec tout les éléments de la ligne double cliquer afin de voir l'identité complète de l'adhérent sélectionné et les activités qu'il pratique cochées dans chacune des ChexckBox ou il est défini 1 dans la feuille.[https://img-19.ccm2.net/oc-SqTcpCLFA4cboGhy6abbbt-E=/dc985a001e6f4e4caa9a9565f881f896/tmp/Feuille_ADHERENTS.JPG[Image:]src= ][https://img-19.ccm2.net/POkl8idPRfmC4sbSTqojr9S3u0M=/9c6931ba9a574c0d904c73735bcf65a2/tmp/userform_adhernts_vide.JPG[Image:]src= ]

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
          Dim noligne As Integer
          N_ligne = Range("A4:A65536").Find(n, lookat:=xlWhole).Row
          
          
          'Insertion des valeurs sur l'UserForm
          'nom
          ADHERENT.TextBox1 = Cells(Target.Row, 1)
          'prénom
          ADHERENT.TextBox2 = Cells(Target.Row, 2)
          'Adresse postal
          ADHERENT.TextBox3 = Cells(Target.Row, 3)
          'Code postal
          ADHERENT.TextBox4 = Cells(Target.Row, 4)
          'Ville
          ADHERENT.TextBox5 = Cells(Target.Row, 5)
          'n°téléphone fixe
          ADHERENT.TextBox6 = Cells(Target.Row, 6)
          'n°téléphone portable
          ADHERENT.TextBox7 = Cells(Target.Row, 7)
          ' adresse mail
          ADHERENT.TextBox8 = Cells(Target.Row, 8)
          
          ' cocher les chexbox si les cellules =1
          'carte Adhérents
          If Cells(N_ligne, 9) = "1" Then
              CheckBox15 = True
          Else
              CheckBox15 = False
          End If
          'Danse salon
          If Cells(N_ligne, 10) = "1" Then
              CheckBox16 = True
          Else
              CheckBox16 = False
          End If
          'dictée petit salon
          If Cells(N_ligne, 11) = "1" Then
              CheckBox17 = True
          Else
              CheckBox17 = False
          End If
          'dictée foyer rigole
          If Cells(N_ligne, 12) = "1" Then
              CheckBox4 = True
          Else
              CheckBox4 = False
          End If
          'Mémoire petit bosquet
          If Cells(N_ligne, 13) = "1" Then
              CheckBox5 = True
          Else
              CheckBox5 = False
          End If
          'mémoire JBC
          If Cells(N_ligne, 14) = "1" Then
              CheckBox6 = True
          Else
              CheckBox6 = False
          End If
          'mémoire Rigole
          If Cells(N_ligne, 15) = "1" Then
              CheckBox7 = True
          Else
              CheckBox7 = False
          End If
          'Peinture
          If Cells(N_ligne, 16) = "1" Then
              CheckBox8 = True
          Else
              CheckBox8 = False
          End If
          'sophro Mardi
          If Cells(N_ligne, 17) = "1" Then
              CheckBox9 = True
          Else
              CheckBox9 = False
          End If
          ' sophro lundi
          If Cells(N_ligne, 18) = "1" Then
              CheckBox10 = True
          Else
              CheckBox10 = False
          End If
          'Ecriture
          If Cells(N_ligne, 19) = "1" Then
              CheckBox11 = True
          Else
              CheckBox11 = False
          End If
          ' Ecriture J
          If Cells(N_ligne, 20) = "1" Then
              CheckBox14 = True
          Else
              CheckBox14 = False
          End If
          ' Lecture Musicale
          If Cells(N_ligne, 21) = "1" Then
              CheckBox13 = True
          Else
              CheckBox13 = False
          End If
          'Astronomie
          If Cells(N_ligne, 22) = "1" Then
              CheckBox15 = True
          Else
              CheckBox15 = False
          End If
          ' Déclarer Administratif
          If Cells(N_ligne, 23) = "1" Then
              CheckBox18 = True
          Else
              CheckBox18 = False
          End If
          
          'ouvrir userform
          ADHERENT.Show
          
      End Sub<code>/code>
      
      1. Modérateur
        A quoi te sert la variable N_Ligne ?
         N_ligne = Range("A4:A65536").Find(n, lookat:=xlWhole).Row
        

        D'où vient la variable "n" que tu utilises dans ton Find ?

        Pourquoi utilises tu la variable N_Ligne dans tes IF
        If Cells(N_ligne, 9) 
        

        Alors qu'il semble, comme je te l'ai déjà dit... que ça soit la variable Target.Row que tu devrais utiliser ??

        NB: Pour poster ton code sur le forum, pense à préciser le Langage dans les balises de code pour avoir la coloration syntaxique.
        Explications disponibles ici ( à lire ENTIÈREMENT ) : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

        NB²: J'ai édité ton précédent message pour corriger les balises de code.
    2. Bonjour a tous et merci de votre aide. Je ne sais plus comment j'ai fait, mais j'ai résolue le problème. Surement avec tous les conseils reçus.
      Pour ceux que cela intéresse, je vais mettre en ligne les codes et les fichiers.
      A bientôt.
      GaGeF