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 :

Insérer une condition pour des boutons radio


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Points : 93
    Points
    93
    Par défaut Insérer une condition pour des boutons radio
    Bonjour à tous,
    J'ai une userform avec 20 lignes de 4 boutons radio chacune (OptionBouton).
    Sur chaque ligne j'ai crée un label et dedans mis les 4 boutons radio de la ligne.
    Lorsque je clique sur mon bouton Valider, le code va chercher la feuille qui correspond à la date en allant chercher celle-ci dans une textbox dédiée.
    Ca c'est pour planter le décor.

    Mon code qui est le suivant fonctionne très bien :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    'Pour mes boutons radio
    Private Sub ExporterFormBouton()
        Dim feuille As Worksheet
     
        Set feuille = Worksheets(CStr(NouvelleJournée.Controls("TextBox193")))
     
        Call CopierTextboxDansFeuilleBouton(feuille)
    End Sub
     
    Private Function ChercherDerniereLigneBouton(feuille As Worksheet) As Integer
        Dim ligne As Integer
        Dim colonne As Integer
        Dim trouve As Boolean
        Dim ligneRemplie As Boolean
     
        ligne = 3
     
        'Parcours des lignes jusqu'à trouver la première vide
        While Not trouve
            ligneRemplie = False
     
            'Parcours des colonnes pour tester le remplissage même partiel d'une ligne
            For colonne = 8 To 12
                If feuille.Cells(ligne, colonne).Value <> "" Then
                    ligneRemplie = True
                End If
            Next
     
            If ligneRemplie Then
                'La ligne est remplie : il faut continuer la recherche
                ligne = ligne + 1
            Else
                'Première ligne vide atteinte
                trouve = True
            End If
        Wend
     
        ChercherDerniereLigneBouton = ligne
    End Function
     
    Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet)
        Dim ligneT As Integer
        Dim colonne As Integer
        Dim ligneVideF As Integer
     
        ligneT = 1
        ligneVideF = ChercherDerniereLigneBouton(feuille)
     
        For ligneT = 1 To nbLigneOptionButton
            For colonne = 1 To 4
                feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton))
            Next
            ligneT = ligneT
        Next
    End Sub
    Lorsque je valide, le bouton radio coché d'une ligne renvoie VRAI et ceux non cochés renvoie FAUX.
    Jusque là ça me va bien.
    Le soucis c'est que lorsque je n'ai coché aucun des 4 boutons radio d'une ligne ça me renvoie la valeur FAUX pour tous. Hors, dans ce cas je voudrais que ça ne me renvoie rien pour avois les cellules correspondantes vide.

    Je dois donc insérer une fonction If dans la derniere partie du code qui est la suivante :

    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
    Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet)
        Dim ligneT As Integer
        Dim colonne As Integer
        Dim ligneVideF As Integer
     
        ligneT = 1
        ligneVideF = ChercherDerniereLigneBouton(feuille)
     
        For ligneT = 1 To nbLigneOptionButton
            For colonne = 1 To 4
                feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton))
            Next
            ligneT = ligneT
        Next
    End Sub
    [/CODE]

    J'ai donc essayé cela en insérant un For avant le If (ligne 10 dans le code qui suit) mais j'ai un message qui me dit qu'il y a un Next sans For

    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
    Private Sub CopierTextboxDansFeuilleBouton(feuille As Worksheet)
        Dim ligneT As Integer
        Dim colonne As Integer
        Dim ligneVideF As Integer
     
        ligneT = 1
        ligneVideF = ChercherDerniereLigneBouton(feuille)
     
        For ligneT = 1 To nbLigneOptionButton
            For colonne = 1 To 4
            If NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton)) = "FAUX" Then
     
                feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = ""
            Next
            ligneT = ligneT
            Else
            For colonne = 1 To 4
                feuille.Cells(ligneVideF + ligneT - 1, colonne + 7).Value = NouvelleJournée.Controls("OptionButton" & CStr(ligneT + (colonne - 1) * nbLigneOptionButton))
            Next
            ligneT = ligneT
            End If
        Next
     
    End Sub
    Et si je met le For après le If, j'ai une variable non définie en ligne 11, c'est à dire sur le If.

    Un cerveau surpuissant saurait-il me dire ce que je loupe, re loupe et re re loupe paske là je tourne en rond ? -))

    Merci par avance à ceux qui se pencheront sur mon soucis.

    Laurent

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonsoir,

    Pour mettre en évidence les erreurs de déclaration il convient de commencer toutes tes pages de codes par ligne :

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Points : 93
    Points
    93
    Par défaut Bonsoir
    Oui c'est la cas mais j'ai du code avant ce que j'ai mis sur le post avec l'option explicite en premier.
    J'ai juste épuré ce qu'il y a avant et qui n'a rien à voir pour ne pas encombrer le poste. Déjà qu'il est long -))
    Merci quand même

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    le Next de la ligne n°14 doit se trouver après le End If de la ligne n°21 …

    Et je me demande à quoi peuvent bien servir les lignes n°15 & 20, si ce n'est à rien ?‼


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

Discussions similaires

  1. Choix d'une valeur modifie des boutons radios
    Par hyper123 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2013, 09h43
  2. Réponses: 0
    Dernier message: 05/10/2012, 15h08
  3. Afficher/cacher une liste selon des boutons radios
    Par Machin3000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2008, 18h26
  4. Réponses: 6
    Dernier message: 14/12/2006, 11h36

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