Aucun retour de macro
Jenamande10
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis nouvelle sur votre site et également débutante en programmation vba.
Mon souci est le suivant:
Je dois créer un programme qui calcul à partir d'une valeur entée de la hauteur, le volume équivalent. J'ai créer un macro avec une structure select case couplée avec des If étant donné les conditions sur la valeur de la hauteur. Cependant, quand je lance ma macro...rien! Aucun retour dans ma cellule de résultat! Ni aucun message d'erreur d'ailleurs. En trainant un peu sur le site, j'ai vu qu'il fallait vérifier que j'étais bien en automatique, c'est fait, mais toujours rien!! Je ne sais vraiment plus quoi faire!! Aidez moi s'il vous plait!!
Mon code se présente comme suit:
Dim one As String
Dim X As Single
Dim Y As Single
Dim Init As Single
Dim Fin As Single
one = Sheets("Cigares").Range("C5").Value
X = Sheets("Cigares").Range("C8").Value
Y = Sheets("Cigares").Range("C10").Value
Init = Sheets("Cigares").Range("A12").Value
Fin = Sheets("Cigares").Range("A13").Value
Select Case one
Case one = "B1061"
If X < 630 Then
Init = (0.0266 * X ^ 2) + (15.959 * X) - 408.15
ElseIf X > 2330 Then
Init = (-0.0262 * X ^ 2) + (171.43 * X) - 148064
Else
Init = (54.033 * X) - 15248
End If
If Y < 630 Then
Fin = (0.0266 * Y ^ 2) + (15.959 * Y) - 408.15
ElseIf Y > 2330 Then
Fin = (-0.0262 * Y ^ 2) + (171.43 * Y) - 148064
Else
Init = (54.033 * X) - 15248
End If
Case one = "B1062"
If X < 650 Then
Init = (0.026 * X ^ 2) + (16.226 * X) - 429.59
ElseIf X > 2330 Then
Init = (-0.0264 * X ^ 2) + (172.37 * X) - 149226
Else
Init = (54.006 * X) - 15292
End If
If Y < 650 Then
Fin = (0.026 * Y ^ 2) + (16.226 * Y) - 429.59
ElseIf Y > 2330 Then
Fin = (-0.0264 * Y ^ 2) + (172.37 * Y) - 149226
Else
Init = (54.006 * X) - 15292
End If
Case one = "B1063"
If X < 660 Then
Init = (0.0124 * X ^ 2) + (7.5673 * X) - 203.3
ElseIf X > 2350 Then
Init = (-0.0123 * X ^ 2) + (81.327 * X) - 70186
Else
Init = (26.042 * X) - 7627.9
End If
If Y < 660 Then
Fin = (0.0124 * Y ^ 2) + (7.5673 * Y) - 203.3
ElseIf Y > 2350 Then
Fin = (-0.0123 * Y ^ 2) + (81.327 * Y) - 70186
Else
Init = (26.042 * X) - 7627.9
End If
Case one = "B1064"
If X < 640 Then
Init = (0.0252 * X ^ 2) + (15.406 * X) - 400.84
ElseIf X > 2330 Then
Init = (-0.0232 * X ^ 2) + (155.39 * X) - 130880
Else
Init = (52.014 * X) - 14832
End If
If Y < 640 Then
Fin = (0.0252 * Y ^ 2) + (15.406 * Y) - 400.84
ElseIf Y > 2330 Then
Fin = (-0.0232 * Y ^ 2) + (155.39 * Y) - 130880
Else
Init = (52.014 * X) - 14832
End If
Case one = "B1065"
If X < 650 Then
Init = (0.0257 * X ^ 2) + (16.007 * X) - 423.72
ElseIf X > 2350 Then
Init = (-0.0248 * X ^ 2) + (165.15 * X) - 141717
Else
Init = (53.568 * X) - 15290
End If
If Y < 650 Then
Fin = (0.0257 * Y ^ 2) + (16.007 * Y) - 423.72
ElseIf Y > 2350 Then
Fin = (-0.0248 * Y ^ 2) + (165.15 * Y) - 141717
Else
Init = (53.568 * X) - 15290
End If
Case one = "B1066"
If X < 650 Then
Init = (0.0245 * X ^ 2) + (15.45 * X) - 409.84
ElseIf X > 2270 Then
Init = (-0.0251 * X ^ 2) + (159.54 * X) - 133428
Else
Init = (50.522 * X) - 13909
End If
If Y < 650 Then
Fin = (0.0245 * Y ^ 2) + (15.45 * Y) - 409.84
ElseIf Y > 2330 Then
Fin = (-0.0251 * Y ^ 2) + (159.54 * Y) - 133428
Else
Init = (50.522 * X) - 13909
End If
Case one = "B1067"
If X < 670 Then
Init = (0.0242 * X ^ 2) + (15.812 * X) - 433.89
ElseIf X > 2880 Then
Init = 118133.1
ElseIf 2420 < X > 2880 Then
Init = (-0.0317 * X ^ 2) + (194.63 * X) - 179242
Else
Init = (50.332 * X) - 13411
End If
If Y < 670 Then
Fin = (0.0242 * Y ^ 2) + (15.812 * Y) - 433.89
ElseIf Y > 2880 Then
Fin = 118133.1
ElseIf 2420 < Y > 2880 Then
Fin = (-0.0317 * Y ^ 2) + (194.63 * Y) - 179242
Else
Init = (50.332 * X) - 13411
End If
Case Else
If X < 700 Then
Init = (0.0291 * X ^ 2) + (19.583 * X) - 561.78
ElseIf X > 2500 Then
Init = (-0.0306 * X ^ 2) + (212.22 * X) - 198654
Else
Init = (64.868 * X) - 19617
End If
If Y < 700 Then
Fin = (0.0291 * Y ^ 2) + (19.583 * Y) - 561.78
ElseIf Y > 2500 Then
Fin = (-0.0306 * Y ^ 2) + (212.22 * Y) - 198654
Else
Init = (64.868 * X) - 19617
End If
End Select
End Sub
Je suis nouvelle sur votre site et également débutante en programmation vba.
Mon souci est le suivant:
Je dois créer un programme qui calcul à partir d'une valeur entée de la hauteur, le volume équivalent. J'ai créer un macro avec une structure select case couplée avec des If étant donné les conditions sur la valeur de la hauteur. Cependant, quand je lance ma macro...rien! Aucun retour dans ma cellule de résultat! Ni aucun message d'erreur d'ailleurs. En trainant un peu sur le site, j'ai vu qu'il fallait vérifier que j'étais bien en automatique, c'est fait, mais toujours rien!! Je ne sais vraiment plus quoi faire!! Aidez moi s'il vous plait!!
Mon code se présente comme suit:
Dim one As String
Dim X As Single
Dim Y As Single
Dim Init As Single
Dim Fin As Single
one = Sheets("Cigares").Range("C5").Value
X = Sheets("Cigares").Range("C8").Value
Y = Sheets("Cigares").Range("C10").Value
Init = Sheets("Cigares").Range("A12").Value
Fin = Sheets("Cigares").Range("A13").Value
Select Case one
Case one = "B1061"
If X < 630 Then
Init = (0.0266 * X ^ 2) + (15.959 * X) - 408.15
ElseIf X > 2330 Then
Init = (-0.0262 * X ^ 2) + (171.43 * X) - 148064
Else
Init = (54.033 * X) - 15248
End If
If Y < 630 Then
Fin = (0.0266 * Y ^ 2) + (15.959 * Y) - 408.15
ElseIf Y > 2330 Then
Fin = (-0.0262 * Y ^ 2) + (171.43 * Y) - 148064
Else
Init = (54.033 * X) - 15248
End If
Case one = "B1062"
If X < 650 Then
Init = (0.026 * X ^ 2) + (16.226 * X) - 429.59
ElseIf X > 2330 Then
Init = (-0.0264 * X ^ 2) + (172.37 * X) - 149226
Else
Init = (54.006 * X) - 15292
End If
If Y < 650 Then
Fin = (0.026 * Y ^ 2) + (16.226 * Y) - 429.59
ElseIf Y > 2330 Then
Fin = (-0.0264 * Y ^ 2) + (172.37 * Y) - 149226
Else
Init = (54.006 * X) - 15292
End If
Case one = "B1063"
If X < 660 Then
Init = (0.0124 * X ^ 2) + (7.5673 * X) - 203.3
ElseIf X > 2350 Then
Init = (-0.0123 * X ^ 2) + (81.327 * X) - 70186
Else
Init = (26.042 * X) - 7627.9
End If
If Y < 660 Then
Fin = (0.0124 * Y ^ 2) + (7.5673 * Y) - 203.3
ElseIf Y > 2350 Then
Fin = (-0.0123 * Y ^ 2) + (81.327 * Y) - 70186
Else
Init = (26.042 * X) - 7627.9
End If
Case one = "B1064"
If X < 640 Then
Init = (0.0252 * X ^ 2) + (15.406 * X) - 400.84
ElseIf X > 2330 Then
Init = (-0.0232 * X ^ 2) + (155.39 * X) - 130880
Else
Init = (52.014 * X) - 14832
End If
If Y < 640 Then
Fin = (0.0252 * Y ^ 2) + (15.406 * Y) - 400.84
ElseIf Y > 2330 Then
Fin = (-0.0232 * Y ^ 2) + (155.39 * Y) - 130880
Else
Init = (52.014 * X) - 14832
End If
Case one = "B1065"
If X < 650 Then
Init = (0.0257 * X ^ 2) + (16.007 * X) - 423.72
ElseIf X > 2350 Then
Init = (-0.0248 * X ^ 2) + (165.15 * X) - 141717
Else
Init = (53.568 * X) - 15290
End If
If Y < 650 Then
Fin = (0.0257 * Y ^ 2) + (16.007 * Y) - 423.72
ElseIf Y > 2350 Then
Fin = (-0.0248 * Y ^ 2) + (165.15 * Y) - 141717
Else
Init = (53.568 * X) - 15290
End If
Case one = "B1066"
If X < 650 Then
Init = (0.0245 * X ^ 2) + (15.45 * X) - 409.84
ElseIf X > 2270 Then
Init = (-0.0251 * X ^ 2) + (159.54 * X) - 133428
Else
Init = (50.522 * X) - 13909
End If
If Y < 650 Then
Fin = (0.0245 * Y ^ 2) + (15.45 * Y) - 409.84
ElseIf Y > 2330 Then
Fin = (-0.0251 * Y ^ 2) + (159.54 * Y) - 133428
Else
Init = (50.522 * X) - 13909
End If
Case one = "B1067"
If X < 670 Then
Init = (0.0242 * X ^ 2) + (15.812 * X) - 433.89
ElseIf X > 2880 Then
Init = 118133.1
ElseIf 2420 < X > 2880 Then
Init = (-0.0317 * X ^ 2) + (194.63 * X) - 179242
Else
Init = (50.332 * X) - 13411
End If
If Y < 670 Then
Fin = (0.0242 * Y ^ 2) + (15.812 * Y) - 433.89
ElseIf Y > 2880 Then
Fin = 118133.1
ElseIf 2420 < Y > 2880 Then
Fin = (-0.0317 * Y ^ 2) + (194.63 * Y) - 179242
Else
Init = (50.332 * X) - 13411
End If
Case Else
If X < 700 Then
Init = (0.0291 * X ^ 2) + (19.583 * X) - 561.78
ElseIf X > 2500 Then
Init = (-0.0306 * X ^ 2) + (212.22 * X) - 198654
Else
Init = (64.868 * X) - 19617
End If
If Y < 700 Then
Fin = (0.0291 * Y ^ 2) + (19.583 * Y) - 561.78
ElseIf Y > 2500 Then
Fin = (-0.0306 * Y ^ 2) + (212.22 * Y) - 198654
Else
Init = (64.868 * X) - 19617
End If
End Select
End Sub
A voir également:
- Aucun retour de macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Retour à la ligne excel formule - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
11 réponses
Bonjour,
Par défaut, le contenu d'une cellule est de type chaiîne de caractères (string). Il convient donc de convertir en affectant la valeur à la variable:
Par défaut, le contenu d'une cellule est de type chaiîne de caractères (string). Il convient donc de convertir en affectant la valeur à la variable:
Dim x As Integer X = Cint(Sheets("Cigares").Range("C8").Value)
D'abord merci pour la réponse Polux31,
cependant, quand j'écris le ode tel que tu le dis, il y a une erreur de type "dépassement de capacité" Il est à noter que mes valeurs dépassent parfois 35000.
cependant, quand j'écris le ode tel que tu le dis, il y a une erreur de type "dépassement de capacité" Il est à noter que mes valeurs dépassent parfois 35000.
Désolé de ne pas avoir deviné ... dans ce cas il faut faire
Dim x As Long X = CLng(Sheets("Cigares").Range("C8").Value)
D'accord, aucun message d'erreur mais toujours aucun retour.
les résultats ne s'affichent toujours pas
les résultats ne s'affichent toujours pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est normal ... dans le code il n'y a aucune instruction de retour pour l'affichage !!!
Je suppose que tu dois afficher "Fin" et "Init" puisque c'est ce qui est calculé ...
Il faut après le
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Je suppose que tu dois afficher "Fin" et "Init" puisque c'est ce qui est calculé ...
Il faut après le
End Select
Sheets("Cigares").Range("A12").Value = Init Sheets("Cigares").Range("A13").Value = Fin
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Merci beaucoup, ça marche parfaitement pour l'affichage de mes valeurs!! C'est super.
Par contre j'ai un petit souci avec les valeurs. Mes valeur de la variable one sont des choix dans un menu déroulant et X et Y sont deux valeurs différentes de hauteur; Je n'arrive qu'à afficher un résultat que pour une seule condition; quand je change de valeur de one, aucune modification n'apparait. Pourtant l'association des select case et des if semble correcte....
Par contre j'ai un petit souci avec les valeurs. Mes valeur de la variable one sont des choix dans un menu déroulant et X et Y sont deux valeurs différentes de hauteur; Je n'arrive qu'à afficher un résultat que pour une seule condition; quand je change de valeur de one, aucune modification n'apparait. Pourtant l'association des select case et des if semble correcte....
Tu as un menu déroulant dans une cellule mais tu affectes à "One" la valeur de la cellule et non de la sélection du menu déroulant !!!
Je ne connais pas les contrôles de formulaire et ne sais pas les manipuler, dsl.
Je ne connais pas les contrôles de formulaire et ne sais pas les manipuler, dsl.
J'ai cherché un peu comment récupérer la sélection de la liste déroulante.J'ai trouvé un truc mais ce n'est peut être pas la meilleure solution.
Si le contrôle de formulaire est une combobox, il faut dans le format de contrôle mettre une cellule liée. La cellule liée prendra la valeur du choix de la liste déroulante. Dans ton exemple la cellule liée est Sheets("Cigares").Range("C5"). Ton code fonctionnera quand tu changeras de sélection.
Si le contrôle de formulaire est une combobox, il faut dans le format de contrôle mettre une cellule liée. La cellule liée prendra la valeur du choix de la liste déroulante. Dans ton exemple la cellule liée est Sheets("Cigares").Range("C5"). Ton code fonctionnera quand tu changeras de sélection.