Petit programme macro

Bonjour,

Je me lance dans l'apprentissage du VBA-Excel et j'ai besoin de votre aide. Je vous décris ce que je souhaite faire.

-1er page la personne choisi si il veut calculer un diamètre ou une longueur.

----2ème page ( DIAMETRE ) ici je souhaite que la personne renseigner 3 valeur ( longueur, epaisseur, et diamètre mandrin). Pour ne pas qu'il rentre du texte ou autre j'ai utilisé la fonction" If IsNumeric" . Si par erreur quelq'un met du texte a la place des chiffres une msgbox s'affiche en lui disant de mettre des chiffre tout simplement.

j'en arrive à mon problème, je veux que quand toutes les conditions sont réunis ( cet à dire que tout les valeurs renseigner son bien des chiffre) cela calcule le résultat grâce à une macro qui effectue une formule. Le problème c'est qu'il ne veut pas prendre ma macro en compte, et je ne comprend pas pourquoi.

----3ème PAGE (LONGUEUR) ici je souhaite que la personne renseigner 3 valeur ( longueur, diamètre, et diamètre mandrin). Même chose que le diamètre.

Le nom de la macro dans le code est MACRO1 mais peut importe la macro il ne veut pas me la lancer.

Sub variables()

'SI TOUT EST OK alors LANCER LA MACRO CALCUL

If IsNumeric(Range("H7")) And IsNumeric(Range("D7")) And IsNumeric(Range("L7")) And Range("L7") > 0 And Range("D7") > 0 And Range("O7") > 0 Then MACRO1

'VALEUR NUMERIQUE POUR LE DIAMETRE MANDRIN

If IsNumeric(Range("H7")) And Range("H7") > 0 Then

Dim DiametreMandrin As Integer
DiametreMandrin = Range("H7")

Else
MsgBox "Veuillez rentrer un diamètre entre 1 et 9999"
Range("H7").ClearContents
End If
'VALEUR NUMERIQUE POUR epaisseur

If IsNumeric(Range("D7")) And Range("D7") > 0 Then
Dim epaisseur As Integer
epaisseur = Range("D7")

Else
MsgBox "Veuillez rentrer une epaisseur comprise entre 0.001 et 9.999"
Range("D7").ClearContents
End If

'VALEUR NUMERIQUE POUR LONGUEUR

If IsNumeric(Range("L7")) And Range("L7") > 0 Then
Dim longueur As Integer
longueur = Range("L7")

Else
MsgBox "Veuillez rentrer une longueur comprise entre 1 et 9999"
Range("L7").ClearContents
End If

End Sub

Merci d'avance.

ps: si vous avez des petite astuces pour améliorer tout ça je suis preneur

Salut,

Très basiquement, je dirais qu'il faut associer ton bouton à la macro ...

Donc clique droit, "Affecter une macro" et lui affecter le code que tu as rédigé !

Attention à l'orthographe, "Paramètre" ça prend un "s" au pluriel

Bon aprèm,

Floo73

Très basiquement, je dirais qu'il faut associer ton bouton à la macro ...

Donc clique droit, "Affecter une macro" et lui affecter le code que tu as rédigé !

j'ai essayer mais quand j'affecte tout mon code entier au bouton il fait ce que je lui demande mais il ne fait pas la macro.

Si j'affecte la "MACRO1" au bouton il va juste faire le calcul, mais il ne va pas vérifier si tout les valeurs sont numériques.

Donc ce que je souhaite c'est qu'il fasse les deux en même temps. Pour que en appuyant sur le bouton CALCULER il vérifier si les valeurs sont numérique si c'est OK il fait le calcul sinon il m'affiche une msgbox en indiquant que je me suis trompé dans une case.

Bonsoir,

A tester mais je pense qu'aux vues de tes explications, il va falloir mettre toute ta macro dans un If. De plus, je te propose de demander si les valeurs sont différentes de vides plutôt que supérieures à 0.

SI toutes les données sont numériques et <>"" ALORS

on lui demande réaliser le calcul

SINON il alerte via un message d'erreur.

Bonne soirée,

Sha'

D'accord je vais essayer ça des que je peux. je vous tiens au courant, merci.

Doublon à supprimer.

J'ai essayé, mais je n'arrive pas à lancer ma macro calcul après le ''then" de la fonction "if".

ou alors me dire comment je peux faire cet formule "" =RACINE(((((L7*D7)/PI())*1000)+((H7/2)^2)))*2 "" dans le programme. Au lieu d’exécuter une macro.

up

Bonjour,

Pour une solution totalement adaptée à ta situation ... tu ne dois pas hésiter à joindre ton fichier ...

J'attends de pouvoir réussir la 2 ème page pour savoir si je peux continuer le reste sinon ça sert à rien.

j'ai essayer à la place de ceci

If IsNumeric(Range("H7")) And IsNumeric(Range("D7")) And IsNumeric(Range("L7")) And Range("L7") > 0 And Range("D7") > 0 And Range("O7") > 0 Then MACRO1

j'ai mis ça

If IsNumeric(Range("H7")) And IsNumeric(Range("D7")) And IsNumeric(Range("L7")) And Range("L7") > 0 And Range("D7") > 0 And Range("O7") > 0 Then ActiveCell.FormulaR1C1 = _
        "=SQRT(((((R[-9]C[4]*R[-9]C[-4])/PI())*1000)+((R[-9]C/2)^2)))*2"
    Range("H17").Select

dans ce deuxième code au lieu de mettre "then MACRO1" j'ai mis le bout de code de la macro. Le problème c'est que la macro au lieu de prendre les cellules du départ que je lui avais adressé, elle me décale tout mes chiffre ( R[-9]C[4]*R[-9]C[-4] au lieu de tout simplement D7*L7.


Sharney a écrit :

Bonsoir,

A tester mais je pense qu'aux vues de tes explications, il va falloir mettre toute ta macro dans un If. De plus, je te propose de demander si les valeurs sont différentes de vides plutôt que supérieures à 0.

SI toutes les données sont numériques et <>"" ALORS

on lui demande réaliser le calcul

SINON il alerte via un message d'erreur.

Bonne soirée,

Sha'

Et j'ai aussi modifer le code en mettant le <> ""

If IsNumeric(Range("H7")) And IsNumeric(Range("D7")) And IsNumeric(Range("L7")) And Range("L7") <> "" And Range("D7") <> "" And Range("O7") <> "" Then ActiveCell.FormulaR1C1 = _
        "=SQRT(((((R[-9]C[4]*R[-9]C[-4])/PI())*1000)+((R[-9]C/2)^2)))*2"
    Range("H17").Select

Donc comment je peux modifier le bout de code de la macro cet à dire

ActiveCell.FormulaR1C1 = _
        "=SQRT(((((R[-9]C[4]*R[-9]C[-4])/PI())*1000)+((R[-9]C/2)^2)))*2"
    Range("H17").Select

en remplacement (R[-9]C[4]*R[-9]C[-4]) par mes cellules, D7*L7

idem pour (R[-9]C/2) par H7

Re,

Ci-joint ton fichier test ...

9calcul-v2.xlsm (18.39 Ko)

Super c'est ce que j'attendais.

Mais 2ème petit soucis quand je ne met pas de valeur dans une case, il m'affiche bien la msgbox, mais il me calcule quand meme le résultat alors qu'il n'y a pas de valeur. Donc en gros mon bouton calculer ne sert pas à grand chose.

On pourrais pas faire une boucle ? exemple :

Si il y'a des valeur numérique dans toutes les case alors lancer la macro sinon revenir au début.

et dernière petite question si je veut faire la même chose mais pour calculer la longueur ( mais dans la feuille 3 par exemple). Je créer un nouveau module ? et comment le module 1 sais qu'on travaille dans la feuille 2 ?

Re,

Ci-joint une petite modification ...pour ce qui concerne le fait d'éviter le calcul ...

8calcul-v3.xlsm (18.47 Ko)

Merci d'avance , je vais pas pouvoir regarder tout de suite je vais travailler. Et tu peux m'expliquer en gros c'était quoi mes erreurs histoire de ne plus recommencer à vous embêter

Et juste me dire comment je peux faire la même chose mais pour calculer cette fois ci la longueur, mais sur une autre feuille. Je dois créer un nouveau module ?...

Re,

Pas beaucoup d'erreurs ... pour bien comprendre, tu peux comparer les deux macros ligne à ligne ...

En ce qui concerne ta nouvelle feuille ... la logique du calcul est-elle identique ou pas ...???

Est-ce-que la première feuille calcule un diamètre en fonction de tes trois variables ...???

La logique est quasi identique il n y'a que la formule qui change pour calculer la longueur. Il me faut le diamètre de la.bobine, le diamètre mandrin, et l'épaisseur.

Oui je comparerai., mais toi tu a tout mis dans un module.

Re,

Effectivement, toutes les macros doivent être dans un module ...

En ce qui concerne ta nouvelle formule ... peux-tu modifier ton fichier test ... pour l'inclure ...

Merci

23calcul-v4.xlsm (23.82 Ko)

Re,

Ci-joint ton fichier test ...

17calcul-v4.xlsm (27.92 Ko)
Rechercher des sujets similaires à "petit programme macro"