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 :

Déterminer la somme des Textbox spécifiques non vides [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut Déterminer la somme des Textbox spécifiques non vides
    Bonjour forum

    Je ne sais pas si le problème a déjà été traité parce que je n'arrive pas à le trouver.
    J'ai plusieurs Textbox mais 6 dont je n'ai pas changé les noms (Textbox1 à Textbox 6) histoire d'utiliser ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Counter as Integer
    For Counter = 1 To 6
    If Controls("TextBox" & Counter)> Val(T_NbredeCours) then
    Msgbox "Nombre de classes<> Nombre de cours"
    End if
    Next
    .
    Le but du code est de vérifier si le nombre de Textbox
    renseigné est supérieur au nombre renseigné dans la Textbox Nbredecours alors on affiche un message.
    Le code fonctionne mais lors du pas à pas je remarque que ça ne somme pas mais plutôt décompte.

    Comment m'y prendre ?
    Merci

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 581
    Par défaut
    Bonjour,
    de ce que je comprends , tu as 6 Textbox de 1 à 6. tu veux connaitre le nombre de Textbox dans lesquels une valeur a été saisie et le comparé à un textbox nomé T_Nbredecours ? c'est bien cela?

    si c'est bien ce que tu cherche à faire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Counter As Integer, I As Integer
    For I = 1 To 6
        Counter = Counter + Abs(Trim("" & Controls("TextBox" & I)) <> "")
    Next
    If Counter > Val(T_NbredeCours) Then MsgBox "Nombre de classes<> Nombre de cours"



  3. #3
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut
    Merci de la réponse.
    En fait, je voudrais connaître le Total des Textbox non vides.
    Par exemple, si Textbox1 jusqu'à 6 sont remplies , on aura la valeur 6 dans une autre Textbox. Si uniquement 3 sur 6 sont remplies alors on aura donc 3.
    [Mais je précise que j'ai 31 Textbox mais celles qui serviront de test n'ont pas changé de nom.]
    Et avec cette valeur, je pourrai la comparer au nombre de cours de savoir si l'utilisateur à saisir trop de classes ou non?

  4. #4
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut
    J'ai enfin pu résoudre le problème.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Compte()
    Dim Décompt As Integer, Ctls As Control
     
    For Each Ctls In Userform1.Frame1.Controls
        If TypeName(Ctls)="TextBox" Then
             If Ctls<>"" then
                  Décompt= Décompt+1
             End if
         End if
    Next
    T_TextCompt=Décompt
    End sub
    Je mets la procédure dans toutes les Textbox qui servent de Total( Textbox 1 jusqu'à TextBox 6).
    Et dans la Textbox qui reçoit le décompte, je mets le code de comparaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub T_TextCompt()
    If T_TextCompt > T_ Cours then MsgBox "Non"
    End Sub[
    Merci à tous.

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 581
    Par défaut
    Citation Envoyé par Mr l'Ashanti Voir le message
    J'ai enfin pu résoudre le problème.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Compte()
    Dim Décompt As Integer, Ctls As Control
     
    For Each Ctls In Userform1.Frame1.Controls
        If TypeName(Ctls)="TextBox" Then
             If Ctls<>"" then
                  Décompt= Décompt+1
             End if
         End if
    Next
    T_TextCompt=Décompt
    End sub
    Je mets la procédure dans toutes les Textbox qui servent de Total( Textbox 1 jusqu'à TextBox 6).
    Et dans la Textbox qui reçoit le décompte, je mets le code de comparaison

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub T_TextCompt()
    If T_TextCompt > T_ Cours then MsgBox "Non"
    End Sub[
    Merci à tous.
    désolé j'ai juste repris le code que tu as rédigé et qui ne parle plus des 6 textbox!

    j'ais supposé que dans ta Userform1.Frame1.Controls il n'y avait que tes 6 textbox!

  6. #6
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut
    Je comprends
    Sinon dans le frame, il y a 18 Textbox représentant les effectifs des classes du CP1 au CM2 ( Filles/Garçon/Total) et je voulais juste avertir l'utilisateur si le nombre de cours saisie est inférieur au nombre de classes saisies que les Textbox Total récupèrent .

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 581
    Par défaut
    Bonjour,
    je t'avais donné la solution au poste #2!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Compte()
    Dim Ctls As Control
    T_TextCompt = 0
    For Each Ctls In Userform1.Frame1.Controls
            If TypeName(Ctls) = "TextBox" Then T_TextCompt = T_TextCompt + Abs(Ctls <> "")
    Next
    End Sub

  8. #8
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut
    Le code n'a pas produit l'effet escompté. Mais c'est avec plusieurs réflexions que j'ai finalement compris que je devrais plutôt incrémenter et récupérer cette valeur dans une Textbox et faire la comparaison. Votre code, fonctionne lorsque aucune Textbox n'est saisie. Mais dès lors que nous commencions à les remplir, l'incrémentation passe de 1 à 2 puis à 3 jusqu'à 30 pourtant ce sont 6 Textbox que je voulais vérifier et non l'ensemble des Textbox sur mon userform.

    Merci éventuellement pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème sur l'information donnée, suppression des lignes si non vide
    Par chant1432 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/10/2019, 10h20
  2. [XL-2013] Importer des tableaux (marge non vide) de plusieurs feuilles avec VBA
    Par nacereddine.mourad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2019, 18h53
  3. Réponses: 11
    Dernier message: 01/05/2008, 01h37
  4. [MySQL] affichage des champs sql non vides
    Par rachou59650 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/04/2008, 15h59
  5. calcule somme des textbox dans un label
    Par hich24 dans le forum Général VBA
    Réponses: 5
    Dernier message: 07/02/2008, 14h55

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