Association

Résolu/Fermé
GaGeF Messages postés 3 Date d'inscription jeudi 20 février 2020 Statut Membre Dernière intervention 14 mars 2020 - Modifié le 20 févr. 2020 à 16:19
 GaGeF - 16 avril 2020 à 12:37
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

ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 139
20 févr. 2020 à 16:25
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
21 févr. 2020 à 00:20
Ou bien :
If Cells(N_ligne, 9).Text = "1" Then
0
GaGeF Messages postés 3 Date d'inscription jeudi 20 février 2020 Statut Membre Dernière intervention 14 mars 2020
21 févr. 2020 à 09:43
milles excuse mais cela ne fonctionne pas.
mais grand Merçi
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
21 févr. 2020 à 05:25
Bonjour
D'où vient ta variable N_ligne ?

Ne serait ce pas plutôt Target.Row comme le code au dessus ?
0
GaGeF Messages postés 3 Date d'inscription jeudi 20 février 2020 Statut Membre Dernière intervention 14 mars 2020
Modifié le 14 mars 2020 à 17:16
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
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
14 mars 2020 à 17:19
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
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