Utilisation du signe + en vba

lmc71

XLDnaute Occasionnel
Bonjour le Forum
Je viens à vous pour une compréhension du signe + (addition) en code VBA.
J'ai modifié un code calculant des surfaces, pour calculer la surface d'un trapèze avec la formule : (Grande Base + Petite Base) * Hauteur /2. Pour ce faire j'utilise les lignes suivantes (pour exemple de mon souci)

Grande base = 9 cm - Petite base = 7 cm - Hauteur = 10 cm ce qui donne une surface réelle de 80 cm²

Ligne additionnant les bases (résultat Faux)
Mon problème est dans cette portion de calcul : normalement je devrais obtenir 16 cm hors j'obtiens 79 cm
Add = Format(GBase + PBase)
MsgBox "Add " & Add
Résultat = 7 & 9 soit 79 et non 9+7 soit 16

Ligne additionnant les bases (résultat Bon)
Pour obtenir le bon résultat je suis obligé de passer par cette formule
AddMulti = Format(GBase * 2 + PBase * 2) / 2
MsgBox "addMulti " & AddMulti
Résultat = 9+7 soit 16

Calcul de la surface
Surf = Format((GBase * 2 + PBase * 2) / 2 * Hauteur / 2)
MsgBox " Surface " & Surf


Quelqu'un pourrait-il m'expliquer le phénomène du signe + qui ne fonctionne pas entre GBase et PBase et qui fonctionne entre multiplications ?
Je joins le bout de fichier constitué.
En vous remerciant d'avance.
 

Pièces jointes

  • Diff calcul par Macro internet.xlsm
    26.5 KB · Affichages: 64
  • Diff calcul par Macro internet.xlsm
    26.5 KB · Affichages: 66
  • Diff calcul par Macro internet.xlsm
    26.5 KB · Affichages: 64

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Bonjour Roland_M
Je te remercie de ta réponse rapide.
Il faut m'excuser de ce genre de question d'où tes !!!!!, mais je ne suis pas un féru en vba et je cherche à comprendre en pompant à droite et à gauche et je n'ai rien trouvé m'expliquant ce phénomène.
Si je comprends ton message : GBase et PBase sont considérées comme des chaines devant le signe + ou & mais non devant les autres opérateur (/ ou *) donc il faut spécifier que se sont des valeurs numériques et non une chaine. Est-ce que j'ai bien compris ?
 

Modeste geedee

XLDnaute Barbatruc
Re : Utilisation du signe + en vba

Bonsour®

l'operateur "+" est un opérateur mathématique (addition numérique)
l'opérateur "&" est un operateur textuel (concaténation caractères)

la formule surface du trapèze :
Grande base = 9 cm - Petite base = 7 cm - Hauteur = 10
c'est une operation mathématique
=hauteur * (GrandeBase+PetiteBase)/2
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    35.4 KB · Affichages: 113
  • Capture.JPG
    Capture.JPG
    35.4 KB · Affichages: 115

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Bonjour Modeste
Je te remercie pour tes explications.
Dans ma 1ère question j'avais déjà placé la formule que tu m'a rappelée.
Je connaissais la différence entre le + et le & dans une feuille Excel, mais j'ignorais quand terme de code VBA le signe + changeait de propriété. Nous en apprenons tous les jours.
Toujours dans le monde du calcul concernant le trapèze je n'arrive pas à trouver la bonne formule qui me permet (en vba) de trouver la longueur des côtés.
J'ai joint un fichier explicatif de mes calculs en comparant la fonction Tangente et Pythagore, avec les mêmes dimensions j'obtiens des résultats différents.
Merci d'avance pour vos réponses dont je suis toujours preneur.
Cordialement
 

Pièces jointes

  • Diff calcul par Macro internet.xlsm
    25.7 KB · Affichages: 69
  • Diff calcul par Macro internet.xlsm
    25.7 KB · Affichages: 66
  • Diff calcul par Macro internet.xlsm
    25.7 KB · Affichages: 63
Dernière édition:
G

Guest

Guest
Re : Utilisation du signe + en vba

Bonsoir,

C'est le type de tes variables qui vont déterminer que fera le +.
Sur des types de variables string -> concaténation (mieux vaut utiliser &)
Sur des types numérique -> opérateur d'addition

A+
 

Roland_M

XLDnaute Barbatruc
Re : Utilisation du signe + en vba

re

exemples simples pour toi comparer et comprendre
encore que tu devrais déjà faire ces essais toi même !?
sans oublier qu'il y a l'aide.

Sub XYZ()
Dim Var1 As Integer, Var2 As Single, Var3 As String, Var0 As Variant
Var1 = 123
Var2 = 123.45
Var3 = "abcd"

'exemple avec une variable déclarée variant !
'c'est à dire, qui accepte ici, le numérique et l'alphanumérique
'tout dépendra de l'utilisation du + et du &
Var0 = Var1 + Var2: MsgBox "résultat avec(+) " & Var0
Var0 = Var1 & Var2: MsgBox "résultat avec(&) " & Var0

Var0 = Var1 & Var3: MsgBox "résultat avec(&) " & Var0

'par contre Var1 + Var3 il y aura erreur d'incompatibilité !
'car + avec du numérique et des caractères = erreur !
MsgBox "par contre, si on effectuait cette opération: Var1 + Var3" & vbLf & _
"ceci causerait une erreur d'incompatibilité !" & vbLf & _
"car il y a du numérique et de l'alphanumérique !"
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Re : Utilisation du signe + en vba

Bonsour®
Toujours dans le monde du calcul concernant le trapèze je n'arrive pas à trouver la bonne formule qui me permet (en vba) de trouver la longueur des côtés.
J'ai joint un fichier explicatif de mes calculs en comparant la fonction Tangente et Pythagore, avec les mêmes dimensions j'obtiens des résultats différents.
je ne vois pas trop le rapport entre la question et la pièce jointe ... :confused:

Pour le fun ...
ma réponse à cette pièce jointe précédente :
Capture.jpg
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    28.5 KB · Affichages: 62
  • Capture.jpg
    Capture.jpg
    28.5 KB · Affichages: 78
  • trapeze.xlsm
    34.2 KB · Affichages: 50
Dernière édition:

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Bonjour Roland_M
Excuses du retard pour la réponse.
Je te remercie pour tes explications, qui m'ont éclairé. La question est toujours facile quand tu connais la réponse, mais quand tu cherches une aiguille dans une botte de foin c'est très difficile.

Merci encore à toi et tout le forum.
 

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Bonjour Modeste
Comme je l'ai dit à Roland_M, je m'excuse du retard pour te répondre.
J'ai regardé ton fichier joint.
Ta formule " =(((D5-D6)/2)^2+(D7^2))^0,5 " pour calculer le côté est valable pour un trapèze isocèle, je l'avais trouvée sur le forum. Ma vrai question est comment trouver la longueur des côtés d'un trapèze quelconque. Comme je l'ai marqué dans le fichier joint du post 5.
Cette portion de formule " (D5-D6)/2)^2 " n'est pas possible dans un trapèze quelconque du fait que les angles de la grande Base ne sont pas égaux (30° et 60° ou 50° et 40°) qui obligatoirement donneront des longueurs de côté différentes.
J'avais pris (toujours dans le post 5) le modèle de trapèze isocèle pour montrer la différence qu'il existait en utilisant le Théorème de Pythagore et l'utilisation de la fonction Tan qui donnent deux résultats différents (dans mon calcul) pour les mêmes dimensions.

Sinon j'ai très apprécié ton fichier et est-ce que tu pourrais m'expliquer de quel forme de graphique tu as utilisé. J'ai trouvé tes données en colonne F et G mais je n'ai pas arrivé trouver comment tu inclus les lettres et les côtés. Si tu peux me donner un lien explicatif, je t'en remercie d'avance.
A te lire et encore merci de tes infos sans oublier le forum.
Cordialement
 

Modeste geedee

XLDnaute Barbatruc
Re : Utilisation du signe + en vba

Bonsour®
concernant la surface du trapèze :
:cool: la formule reste valable quelque soit le trapèze (isocèle, rectangle ou quelconque) !!!

concernant le périmètre :
pour le trapèze rectangle : le calcul de AH ou BH permet de solutionner le problème.
pour le trapèze quelconque : cette valeur de AH ou BH doit être une donnée fournie !!!
à défaut l'un des angles de base...

pour répondre à la question finale :
il s'agit d'un graphe en nuage de points dans lequel chaque couple de coordonnées correspond à chaque point remarquable de la forme souhaitée
les lettres sont saisies manuellement en correspondance aux points voulus (étiquettes)
 
Dernière édition:

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Bonjour Modeste geedee
Bonjour le Forum
Il doit avoir un décalage horaire ou tu ne dors pas la nuit pour avoir une réponse aussi rapide........:)
En ce qui concerne le graphique j'avais remarqué que tu utilisais le nuage, mais je ne suis pas arrivé à reproduire le quadrillage, ni le positionnement des côtés. Sitôt que je lançais le graphique, il apparaissait une boucle aléatoire. Je vais étudier ceci. Merci.

En ce qui concerne le calcul du périmètre, je suis conscient qu'il faille une quatrième donnée, soit un angle soir une longueur. Je n'arrive pas à maîtriser soit la formule HD*TAN(45)/1 en passant par la tangente, soit en passant par sinus dans la formule P = T + B + H × [(1/sin a1) + (1/sin a2)] que j'ai découverte ci-dessous (en bleu).
Si je reprends la formule 1/sin(30) et 1/sin(45) j'obtiens sur excel -1,012113353 et 1,175221363 d'où mon incompréhension au regard des résultats donnés dans l'exemple ci-dessous 1/sin(30) = 2 et 1/sin(45) = 1.414.
Je fais une erreur, mais je ne sais où.
Encore merci pour ta disponibilité et ton professionnalisme.
Je sais, je me complique la vie, je n'ai quand prendre un mètre et mesurer.......
Cordialement



Méthode 2 sur 3: Calculer le périmètre d’un trapèze sans connaître la dimension de ses côtés obliques

Familiarisez-vous avec l’équation. Si vous ignorez les dimensions des côtés obliques L et R, vous devez remplacer l’équation fondamentale par une autre qui ne contient que les mesures des deux bases. Cependant, pour appliquer la nouvelle formule, vous devez connaître la dimension de la hauteur du trapèze et les valeurs des angles de sa grande base. Dans ce cas, la formule qui vous donne le périmètre du trapèze, s’écrit sous la forme suivante : P = T + B + H × [(1/sin a1) + (1/sin a2)]

= 1/sin30° + 1/sin45° = 2+1.414=3.414

Dans cette équation, P désigne le périmètre, T désigne la petite base, B désigne la grande base et H désigne la hauteur du trapèze. Les valeurs de a1 et a2 correspondent aux mesures en degrés des angles intérieurs de la grande base.
 

Modeste geedee

XLDnaute Barbatruc
Re : Utilisation du signe + en vba

Bonsour®
Si je reprends la formule 1/sin(30) et 1/sin(45) j'obtiens sur excel -1,012113353 et 1,175221363 d'où mon incompréhension au regard des résultats donnés dans l'exemple ci-dessous 1/sin(30) = 2 et 1/sin(45) = 1.414.
Je fais une erreur, mais je ne sais où.

:eek: c'est que la fonction Excel SIN(ref) fonctionne en Radians !!!!:rolleyes:
SIN(Radians(30))
devrait fournir le résultat espéré ...
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    62.7 KB · Affichages: 62
  • Capture.JPG
    Capture.JPG
    62.7 KB · Affichages: 85

lmc71

XLDnaute Occasionnel
Re : Utilisation du signe + en vba

Re Modeste Geedee

Il fallait le savoir. Je n'ai fait que MathSup (maternelle suppérieure) d'où mon ignorance en la matière.
Il est bon de poser des question et d'avoir des gars qui sachent y répondre. Tous les jours on s'instruit et en informatique on ne voit jamais la fin.
Merci encore de transmettre ton savoir.
Cordialement
 

Discussions similaires

Réponses
0
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87