Association

Résolu
GaGeF Messages postés 3 Statut Membre -  
 GaGeF -
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. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
     
    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
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Ou bien :
      If Cells(N_ligne, 9).Text = "1" Then
      0
    2. GaGeF Messages postés 3 Statut Membre
       
      milles excuse mais cela ne fonctionne pas.
      mais grand Merçi
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    D'où vient ta variable N_ligne ?

    Ne serait ce pas plutôt Target.Row comme le code au dessus ?
    0
  3. GaGeF Messages postés 3 Statut Membre
     
    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>
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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.
      0
  4. GaGeF
     
    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
    0