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 :

[VBA-E] Addition des valeurs des textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut [VBA-E] Addition des valeurs des textbox
    Bonsoir
    je fais une application sous Excel et j'ai créer un userform dans lequel j'ai mis un textbox pour que les utilisateurs notent un nombre
    le fonctionnement doit être celui ci
    l'utilisateur1 tape un nombre (ex 1),il sauvegarde
    l'utilisateur2 tape un nombre (ex 2),il sauvegarde
    dans un premier temps je récupére les numéro que l'utilisateur met dans la textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texte1 = TextBox1.Value
    mais je souhaiterai plutot récupérer l'addition des deux nombres (donc ici le résultat devrai être 3 )
    j'avais pensé à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte1 = texte1 + TextBox1.Value
    mais ca me prend à priori ça prend en compte que le dernier numéro (donc 2)

    comment faire poue avoir l'addition ?
    Le savoir est une arme alors soyons armés

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quand tu dis "il sauvegarde", l'utilisateur n sauvegarde quoi et où ?

    A+

  3. #3
    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 038
    Points
    20 038
    Par défaut Re: [Excel-VBA] Addition des valeurs des textbox
    Citation Envoyé par Nom
    Bonsoir
    l'utilisateur1 tape un nombre (ex 1),il sauvegarde
    l'utilisateur2 tape un nombre (ex 2),il sauvegarde
    l'utilisateur fait quoi pour la sauvegarde?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    en fait la sauvegarde à lieu lors du clique sur un bouton validez pour lequel j'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Valider_Opération_Click()
    Dim texte1 As Integer
    texte1 = texte1 + TextBox1.Value
    Range("A1").Select
    ActiveCell.Formula = texte1 
    ActiveWorkbook.Save 'sauvegarde 
    End Sub
    Le savoir est une arme alors soyons armés

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bon...

    Faudra encore 6 posts pour avoir la description complète de l'énoncé???

    Le deuxième utilisateur, il sauvegarde où???

    Pas dans [A1], sinon on écrase la première donnée!!!
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu veux que ta variable texte1 conserve sa valeur entre deux saisies, tu dois la déclarer en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public texte1 As Integer
    Quand tu poses une question, essaie d'imaginer que tu aies à lui répondre...

    A+

  7. #7
    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 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Nom
    en fait la sauvegarde à lieu lors du clique sur un bouton validez pour lequel j'ai mis le code suivant :

    A je crois que j'ai compris... as chaque Validation tu ve rajoutre la valeur saisie à la valeur contenue dans cellule A1... ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Valider_Opération_Click()
    Range("A1") = Range("A1") + TextBox1.Value
    ActiveWorkbook.Save 'sauvegarde 
    End Sub

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    A je crois que j'ai compris... as chaque Validation tu ve rajoutre la valeur saisie à la valeur contenue dans cellule A1... ?
    Oui c'est effectivement cela que je désire faire

    Quand tu poses une question, essaie d'imaginer que tu aies à lui répondre...
    désolé si je n'est pas été clair
    Le savoir est une arme alors soyons armés

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    je réouvre ce sujet car j'ai une question qui découle du code que bbil m'a suggéré

    j'ai un peu réadapter ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Jour = Day(Now)
    'si l'utilisateur ne met rien dans la case opération 1
    If TextBox1.Value = "" Then 
        Range("B" & Jour + 3) = Range("B" & Jour + 3) 'le total reste le même
    Else
        Range("B" & Jour + 3) = Range("B" & Jour + 3) + TextBox1.Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans opération1
    End If 
    End Sub
    donc voila j'ai rajouté d'autre TextBox et j'aimerais ne pas a avoir à réécrir ce code pour les 22 TextBox!
    Or j'ai remarqué que le contenu de la textbox1 va en B12 (12 correspond à mon Jour +3 car aujourd'hui on est le 9)
    le textbox2 va en C12, le textbox3 en D12 ...
    donc comment changer mon code et faire une boucle [/code]
    Le savoir est une arme alors soyons armés

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Points : 55
    Points
    55
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim cont As Control
    Jour = Day(Now)
    For Each cont In Form1.Controls
        If TypeOf cont Is TextBox Then
            If cont.Text <> "" Then
               Range("B" & Jour + 3) = Range("B" & Jour + 3) + TextBox1.Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans opération1
            End If
        End If
    Next
    Dans VB ça donnerais à peu près ça !
    Reste le problème de la lettre à incrémenter !

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello Bigyork,
    C'est ok s'il n'a pas de textbox autre que ceux concernés par sa demande

    Dans le cas contraire, une autre solution consisterait à créer une collection de ses textbox

    C'est toi qui vois, Nom, non ?

    A+

  12. #12
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Salut Nom,
    Tu peux mettre les lettres des colonnes dans la propriété TAG des textbox
    B pour Texbox1
    C pour textbox2
    .
    .
    S'il y a d'autres textbox qui ne sont pas concernées tu ne renseignes pas le TAG

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub InsertDansCellules()
    Dim cont As Control
    Jour = Day(Now())
    For Each cont In UserForm1.Controls
        If TypeOf cont Is MSForms.TextBox And cont.Tag <> "" Then
            If cont.Text <> "" Then
               Range(cont.Tag & Jour + 3) = Range(cont.Tag & Jour + 3) + cont.Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans opération1
            End If
        End If
    Next
    End Sub
    Testé et Ok pour moi
    Dis nous !
    @+

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Heu... T'as prévu que les utilisateurs pouvaient s'amuser à entrer autre chose que des nombres entiers dans les textBox?

  14. #14
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    En VBA, il vaut mieux éviter d'utiliser le range quand on veut avoir une adresse calculée (le range oblige à utiliser les lettres : passer de A à B, ca va encore, mais passer de Z à AA... arg...)
    Utilise plutot Cells, qui a comme paramètre deux nombres. Beaucoup plus facile de faire NumCol+1 !

    Yvan
    Une solution n'est valable que dans un contexte donné

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu peux aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells(NoLigne, NoCol).Select
    'ou
    Range(Cells(NoLigne, NoCol), Cells(NoLigne2, NoCol2)).Select
    A+

  16. #16
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    Citation Envoyé par ouskel'n'or
    Tu peux aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells(NoLigne, NoCol).Select
    'ou
    Range(Cells(NoLigne, NoCol), Cells(NoLigne2, NoCol2)).Select
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Cells(NoLigne, NoCol), Cells(NoLigne2, NoCol2)).Select


    Mais je note que ton range passe par un cells !

    Yvan
    Une solution n'est valable que dans un contexte donné

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    alors je vous donne un peu de nouvelle
    j'ai voulu utiliser les cells au lieu des ranges comme me l'a conseiller ypicot j'ai donc fais ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Jour = Day(Now)
    For NoColonne = 2 To 22
    If TextBox&Nocolonne-1.Value = "" Then 'si l'utilisateur ne met rien dans le textbox 
     
        Cells("& Jour + 3,NoColonne") = Cells("& Jour + 3,NoColonne") 'le total reste le même
    Else
        Cells("& Jour + 3,NoColonne") = Cells("& Jour + 3,NoColonne") + TextBox&NoColonne-1.Value 'sinon on additionne l'ancien total avec la valeur que l'utilisateur viens de mettre dans opération1
    End If
    Next
    mais la syntaxe de mon TextBox.Value n'est plus bon
    Le savoir est une arme alors soyons armés

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie en séparant TextBox&Nocolonne-1
    TextBox & cstr(Nocolonne-1)
    ou
    TextBox & trim(str(Nocolonne-1)) ' dépend de la version (?)

    A tout hasard...

    A+

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    j'ai Excel 97.
    J'ai essayer les 2 syntaxes et la 2ieme semble être bonne toutefois j'ai une erreur type incompatible
    Le savoir est une arme alors soyons armés

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ok
    Tu es dans un form ou ton textBox est dans une feuille de calcul. Tu l'as peut-être déjà dit...
    Si tu esdans un form, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Jour = Day(Now)
    LeControl = "TextBox" & cstr(Nocolonne-1) 
    Set MonTextBox = MaForm.controls(Lecontrol)  'Maform : Nom de ton form
    With MonTextBox
       For NoColonne = 2 To 22 
         If .Value = "" Then 
              Cells("& Jour + 3,NoColonne") = Cells("& Jour + 3,NoColonne") 'le total reste le même 
           Else 
              Cells("& Jour + 3,NoColonne") = Cells("& Jour + 3,NoColonne") + .Value
         End If 
       Next
    End with
    Pas testé Tu peux faire ça pour moi ?

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2011, 03h07
  2. Récupération des valeurs de TextBox sur la Main Form
    Par Ttchaouse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/07/2007, 12h07
  3. Réponses: 5
    Dernier message: 15/06/2007, 11h58
  4. [vba-access] Test sur valeur des champs puis publipostage
    Par realthunderbolt dans le forum Access
    Réponses: 1
    Dernier message: 01/08/2006, 16h38
  5. VBA Excel , récuperer la valeur des options buttons
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2006, 14h25

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