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] déclaration de variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut [VBA-E] déclaration de variables
    bonjour !

    bon dans le développememnt de mon programme je rencontre un probleme assez singulier : je ne trouve pas comment déclarer mes variables. j'utilise des variables qui font appel aux contenus de cellules excel, tant que l'opération que j'effectue est une soustraction il n'y a pas trop de probleme mais des qu'il s'agit d'une addition, des problemes surtout de concaénation apparaissent...

    quelques petits exemples de ce que j'obtiens :

    -si dim a,b as string : 0,1+0,2=0,10,2
    -si dim a,b as long : 3,5-1=3
    -si dim a,b as byte : 8,4+1=9
    -si dim a,b as integer = -3,5+4=0
    -si dim a,b as variant : -3,5+30=-3,5
    -si dim a,b as single : pas de probleme sur les opérations mais quand je stocke le résultat de l'opération dans une cellule excel, le contenu est vu comme un "nombre stocké sous forme de texte" que je ne peux ensuite pas utiliser directement

    comment remédier a ce probleme ?
    voila le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub TextBox2_Change()
        Dim a As Single
        Dim b As Single
        a = TextBox2.Value
        b = Label7.Caption
        If OptionButton1.Value = True Then
            Label10.Caption = b + a
            Else
            Label10.Caption = b - a
        End If
     
    End Sub
    et je rentre ensuite la valeur obtenue dans une cellule excel comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        Dim c As String
        c = Label10.Caption
        j = ComboBox1.ListIndex + 2
        Range("C" & j).Value = c
        modif.Hide
     
    End Sub

    merci de votre aide !!

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Si tu veux que ce soit toujours des nombres, alors il faut le forcer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(a) Then a = CDbl(a)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    ben le programme est censé n'etre utilisé que par peu de personnes qui sauront quel type de données elles seront supposées mettre dans les différents champs donc ce n'est pas un probleme de forcer un champ a recevoir impérativement un nombre

    le truc bizarre c'est que en choisissant de déclarer mes variables comme single, si le nombre obtenu est un entier il n'y a pas de probleme pour le mettre dans une cellule il a l'air d'etre reconnu comme un nombre, mais des qu'une virgule intervient la cellule cible voit ce nombre comme du texte ... et me le dit !

    peut etre existe-t-il des termes que je ne connaitrait pas comme string, integer ou autres byte qui seraient utilisés pour des nombres a virgule? j'ai testé avec single et double mais le probleme reste le meme ...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Bonsoir,
    en fait si tu essayes de remplir des cellules avec des nombres à virgule il faut le faire de manière à ce qu'Excel puisse correctement interpréter si la virgule est un séparateur ou un séparateur de millier, etc.
    Donc en clair, sauf erreur de ma part, il faut que tu utilises la syntaxe qui t'as été donnée plus pour écrire dans une cellule:
    Cdbl pour faire passer un décimal en double précision, Cint pour faire passer un entier, etc.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut
    le probleme n'est pas vraiment dans tes déclarations de variable, mais dans le savant mélange que tu fais avec tes donnée
    textbox.value c'est du texte
    label.caption, c'est du texte
    utilise plutot val() pour transformer dés la saisie tes valeurs en nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub TextBox2_Change()
    Dim a As Single
        Dim b As Single
        a = Val(TextBox2.Value)
        b = Val(Label7.Caption)
        If OptionButton1.Value = True Then
            Label10.Caption = b + a
            Else
            Label10.Caption = b - a
        End If
    End Sub
    bon dimanche

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Lorsque tu écris

    seul b est déclarée en single, pas a, cette variable est déclarée en variant, c'est à dire qu'elle peut prendre tout les types.

    De plus je te conseille d'utiliser les fonctions de conversion CDbl, etc.. avant de faire tes calculs. Va dans l'aide et tape "Conversion"

    Starec

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

Discussions similaires

  1. [VBA] Probleme déclaration de variable
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2008, 14h57
  2. déclaration de variables VBA
    Par FARLON dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/06/2008, 16h18
  3. [VBA]Déclaration de variables
    Par domik dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/04/2007, 20h24
  4. [FLASH MX2004] Déclaration de variables sous flash mx
    Par softyClochette dans le forum Flash
    Réponses: 4
    Dernier message: 29/11/2004, 16h11
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

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