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 :

les user form


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut les user form
    bonjour,

    je vous explique mon problème. Je passe par différents userform pour la saisie des données. Puis je voudrais savoir comment faire pour effectuer les calculs dans mes userform et que les résultats s'affichent dans une feuille excel.

    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
    Private Sub CommandButton1_Click()
     
        hauteur2p.Hide
        point2.Show
     
    End Sub
     
    Private Sub CommandButton2_Click()
    If TextBox34.Value = "" Or TextBox35.Value = "" Or TextBox36.Value = "" Or TextBox37.Value = "" Then
    MsgBox "Il manque des informations."
    Else
    'je les mets ici???
     
    hauteur2p.Hide
    Sheets("calcul1").Select
    End If
    End Sub
     
    'hst station 1
    Private Sub TextBox34_Change()
     
    End Sub
     
    'hv station 1
    Private Sub TextBox35_Change()
     
    End Sub
     
    'hst station 2
    Private Sub TextBox36_Change()
     
    End Sub
     
    'hv station 2
    Private Sub TextBox37_Change()
     
    End Sub

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    c'est un peu vague, tu veux faire quoi exactement?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    Bon en fait pour le moment voila comment je m'y suis pris
    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
    Dim p As Single
    p = WorksheetFunction.pi 'permet d'utiliser le nombre pi
     
        If TextBox34.Value = "" Or TextBox35.Value = "" Or TextBox36.Value = "" Or TextBox37.Value = "" Then
            MsgBox "Il manque des informations."
     
        Else 'debut des calculs
            Range("calcul1!D17") = (Range("calcul1!B17").Value + Range("calcul1!C17").Value) / 2
                If Range("calcul1!D17").Value > 400 Then Range("calcul1!D17") = Range("calcul1!D17").Value - 400
                Else: Range("calcul1!D17") = Range("calcul1!D17").Value
                End If
            Range("calcul1!E18") = (Range("calcul1!E16").Value + Range("calcul1!D17").Value) - 200
            Range("calcul1!D19") = (Range("calcul1!B19").Value + Range("calcul1!C19").Value) / 2
     
                If Range("calcul1!D19").Value > 400 Then Range("calcul1!D19") = Range("calcul1!D19").Value - 400 Else Range("calcul1!D19") = Range("calcul1!D19").Value
                End If
     
            Range("calcul1!E20") = (Range("calcul1!E18").Value + Range("calcul1!D19").Value) - 200
            Range("calcul1!H19") = (Range("calcul1!G19").Value + Range("calcul1!G20").Value) / 2
            Range("calcul1!K19") = (Range("calcul1!G19").Value / (Tan(Range("calcul1!F19").Value * (p / 200)))) + TextBox34.Value - TextBox35.Value
            Range("calcul1!K20") = (Range("calcul1!G20").Value / (Tan(Range("calcul1!F20").Value * (p / 200)))) + TextBox36.Value - TextBox37.Value
        End If
     
    hauteur2p.Hide
    Sheets("calcul1").Select
    mais je ne comprends pas j'ai des petits soucis avec les "IF/THEN/ELSE/END IF" VBA ne les accepte pas. pourquoi?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    Bon alors je viens de trouver pour le if then else

    mais maintenant j'ai un soucis avec cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Range("calcul1!H19") = (Range("calcul1!G19").Value + Range("calcul1!G20").Value) / 2
    il me dit erreur d'exécution 13

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    si tu essaye de ne mettre une seule instruction par ligne
    le end if n'est pas nécessaire
    néanmoins pour des raison de lisibilité lors de relecture
    je te conseille plutot d'imbriquer tes condition d'une façon plus conventionnelle
    comme suis

    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
    Dim p As Single
    p = WorksheetFunction.Pi 'permet d'utiliser le nombre pi
     
        If TextBox34.Value = "" Or TextBox35.Value = "" Or TextBox36.Value = "" Or TextBox37.Value = "" Then
            MsgBox "Il manque des informations."
     
        Else 'debut des calculs
            Range("calcul1!D17") = (Range("calcul1!B17").Value + Range("calcul1!C17").Value) / 2
                If Range("calcul1!D17").Value > 400 Then
                    Range("calcul1!D17") = Range("calcul1!D17").Value - 400
                Else
                    Range("calcul1!D17") = Range("calcul1!D17").Value
                End If
            Range("calcul1!E18") = (Range("calcul1!E16").Value + Range("calcul1!D17").Value) - 200
            Range("calcul1!D19") = (Range("calcul1!B19").Value + Range("calcul1!C19").Value) / 2
     
                If Range("calcul1!D19").Value > 400 Then
                    Range("calcul1!D19") = Range("calcul1!D19").Value - 400
                Else
                    Range("calcul1!D19") = Range("calcul1!D19").Value
                End If
     
            Range("calcul1!E20") = (Range("calcul1!E18").Value + Range("calcul1!D19").Value) - 200
            Range("calcul1!H19") = (Range("calcul1!G19").Value + Range("calcul1!G20").Value) / 2
            Range("calcul1!K19") = (Range("calcul1!G19").Value / (Tan(Range("calcul1!F19").Value * (p / 200)))) + TextBox34.Value - TextBox35.Value
            Range("calcul1!K20") = (Range("calcul1!G20").Value / (Tan(Range("calcul1!F20").Value * (p / 200)))) + TextBox36.Value - TextBox37.Value
        End If
     
    hauteur2p.Hide
    Sheets("calcul1").Select

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    ok et pour mon problème d'erreur. parce que je ne comprends vraiment pas d'ou cela peut venir

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour la ligne :
    Range("calcul1!H19") = (Range("calcul1!G19").Value + Range("calcul1!G20").Value) / 2
    qui provoque une erreur, vérifiez que G19 et/ ou G20 ne contiennent pas du texte ou des valeurs formatées en texte ou que les 2 ne soient pas vides.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    non elles contiennent des chiffres. enfin je rentre des chiffres dedans mais voici comment elle sont déclarées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'distance pt1
    Private Sub TextBox36_Change()
    Range("calcul1!G19") = TextBox36
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'distance pt2
    Private Sub TextBox51_Change()
    Range("calcul1!G20") = TextBox51
    End Sub

  9. #9
    Invité
    Invité(e)
    Par défaut
    Avez-vous vérifié avec Format , Cellules que c'est bien "Standard" qui est sélectionné ?

    Etes-vous certain que lors de la saisie un espace n'a pas été tapé ?

    Sinon essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("calcul1!G19") = Val(TextBox36)
    Range("calcul1!G20") = Val(TextBox51)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    les cellules sont bien en standard

    j'ai essayer avec VAL mais rien a faire

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    je viens d'essayer en rentrant 1 de partout la VBA accepte.

    mais alors tout mes calculs sont faux et ne respectent pas mes attentes et se que j'ai écris??


  12. #12
    Invité
    Invité(e)
    Par défaut
    J'avoue que je ne comprends pas très bien, j'ai fait l'essai avec votre ligne de code et les TextBox et ça fonctionne.

    Avez-vous essayé en mode pas-à-pas.

    Vous placez un point d'arrêt sur la ligne de code et vous lancez la macro.

    Lorsque la fenêtre VBA s'affiche vous appuyez sur F8 puis vous amenez le curseur sur le 1er "Range" puis sur le 2ème et le 3ème.

    Est-ce que les valeurs s'affichent bien ?

  13. #13
    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
    Par défaut
    Pour renseigner tes cellules G19 et G20 tu transferts directement tes "valeurs" depuis des textbox. Ta syntaxe transfert des "strings"
    Pour une valeur, à la place de Range("calcul1!G19") = TextBox36, mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("calcul1!G19") = TextBox36.value
    Idem pour l'autre.
    Tu dis.

    (bonsoir Jacques Jean)

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonsoir aussi Ouskel'n'or,

    Quel idiot !

    Moi bien sûr.

    Et dire que c'est bien évidemment ce que j'ai mis dans le code pour faire l'essai.

    Cela me met le moral à zéro pour ce soir. Pas de doute, je vieillis et il va falloir que je pense à raccrocher.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    ok merci je ne savais pas, mais alors comment lui dire que ce ne sera plus des integer ou long mais des single?

  16. #16
    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
    Par défaut
    Fais pas ça, Jacques Jean, tu ne vas pas me laisser tomber, si tu fais ça je me sentirai comme le dernier de mohicans

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Citation Envoyé par jbggg Voir le message
    ok merci je ne savais pas, mais alors comment lui dire que ce ne sera plus des integer ou long mais des single?
    A priori, Excel ne fait pas la différence entre les différents formats numériques.

    Peux-tu préciser ta pensée?

    P.S. pour Jacques Jean: Pas nous quitter, non, pas nous quitter...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 174
    Par défaut
    alors j'ai bien mis textbox.value

    mais lorsque, par exemple je rentre 2,123, dans un textbox, excel lui écrit 2 123

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il faut voir quels sont les séparateurs (milliers et décimal) paramétrés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DecimalSeparator
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ThousandsSeparator
    devraient te permettre d'adapter et de corriger la saisie

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  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
    Par défaut
    Bonsoir Pierre,
    Ne faut-il pas rétablir les paramètres pour les autres nombres si on fait ça ?
    C'est une "vrai" question

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

Discussions similaires

  1. Inserer les valeurs d'une user form dans un tableau
    Par ludovicpierre dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2010, 16h08
  2. les users connectés à une base oracle
    Par progima dans le forum Oracle
    Réponses: 8
    Dernier message: 08/11/2005, 18h43
  3. Mes Docs visible de tous les users sous WIN 2000 PRO ???
    Par fute dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 21/08/2005, 13h16
  4. Exporter TOUS les users d'une base
    Par Nullos Oracle dans le forum Oracle
    Réponses: 12
    Dernier message: 13/03/2005, 21h32
  5. [LG]Les pointeurs: Forme en "Anneaux"
    Par k o D dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2004, 08h29

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