OVH Cloud OVH Cloud

Macro avec variable extérieure

8 réponses
Avatar
DC
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un pourcentage,
une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la macro,
ce qui peut poser un problème pour un utilisateur qui ne fait que travailler
avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée ( Coéf_maj )
sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC

8 réponses

Avatar
Charles Ingals
Bonjour DC,
C'est possible en effet. Moi je procéde de la façon suivante:
La valeur est dans la cellule A1
dim valeur as integer
valeur=range("A1").value
ensuite modifie
c.Value = c.Value * 1.02 par c.Value = c.Value * valeur
Ca devrait fonctionner comme tu le souhaites.
@+ et bon week-end

"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage,

une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro,

ce qui peut poser un problème pour un utilisateur qui ne fait que
travailler

avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée ( Coéf_maj )
sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC





Avatar
Jacky
Re...
Et comme cela, peut-être
'----------
Sub jj()
Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))
If Coef_maj = 0 Then Exit Sub
For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * Coef_maj
End If
Next c
End Sub
'-----------
Salutations
JJ

"DC" a écrit dans le message de
news:43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage,

une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro,

ce qui peut poser un problème pour un utilisateur qui ne fait que
travailler

avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée ( Coéf_maj )
sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC





Avatar
DC
Re Bonjour à Tous,

Petit changement dans le raisonnement.

L'idéal serait qu'au lancement de la macro, une fenêtre apparaisse,
demandant le taux de majoration à l'utilisateur, qui lui intervient
manuellement et après " Entrée " la macro continue son travail normalement
en tenant compte de la variable, et la fenètre disparait.

Salutation.!..........Merci d'avance.........DC


"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage, une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro, ce qui peut poser un problème pour un utilisateur qui ne fait que
travailler avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée ( Coéf_maj )
sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC





Avatar
Jacky
Re...
Voir réponse précédente
JJ

"DC" a écrit dans le message de
news:43103319$0$27443$
Re Bonjour à Tous,

Petit changement dans le raisonnement.

L'idéal serait qu'au lancement de la macro, une fenêtre apparaisse,
demandant le taux de majoration à l'utilisateur, qui lui intervient
manuellement et après " Entrée " la macro continue son travail
normalement

en tenant compte de la variable, et la fenètre disparait.

Salutation.!..........Merci d'avance.........DC


"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage, une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro, ce qui peut poser un problème pour un utilisateur qui ne fait que
travailler avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée (
Coéf_maj )


sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC









Avatar
michdenis
Bonjour DC,

Tu peux définir un "NOM" (barre des menus / insertion / nom / définir /

Son nom = "Taux" , refersto : 1.02

Et dans ta procédure, pour retrouver la valeur de "Taux" pour utiliser dans ta boucle

Dans ta boucle du peux remplacer 1.02 par MValeur

'----------------------
Dim MValeur As Double, T As String
Dim Sep As String
Sep = Application.International(xlDecimalSeparator)
T = Application.Names("Taux").RefersTo
T = WorksheetFunction.Substitute(T, ".", Sep)
MValeur = CDbl(Right(T, Len(T) - 1))

'Reste de ton code

'----------------------


Salutations!






"DC" a écrit dans le message de news: 43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un pourcentage,
une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la macro,
ce qui peut poser un problème pour un utilisateur qui ne fait que travailler
avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée ( Coéf_maj )
sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC
Avatar
DC
Bonjour à Tous............Bonjour Jacky,

J'ai donc mis en oeuvre ta modification de macro.

et le résultat : Erreur de complilation et Erreur de Syntaxe et c'est la
1ère ligne suivante qui se met en surbrillance et chose insolite pour moi,
c'est 2 premières lignes s'écrivent en rouge dans la macro,

J'ai encore dû faire une fausse manoeuvre.!..............

Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))

Salutations.!.............Merci d'avance...........DC

"Jacky" a écrit dans le message de news:

Re...
Voir réponse précédente
JJ

"DC" a écrit dans le message de
news:43103319$0$27443$
Re Bonjour à Tous,

Petit changement dans le raisonnement.

L'idéal serait qu'au lancement de la macro, une fenêtre apparaisse,
demandant le taux de majoration à l'utilisateur, qui lui intervient
manuellement et après " Entrée " la macro continue son travail
normalement

en tenant compte de la variable, et la fenètre disparait.

Salutation.!..........Merci d'avance.........DC


"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage, une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro, ce qui peut poser un problème pour un utilisateur qui ne fait
que
travailler avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée (
Coéf_maj )


sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC













Avatar
Jacky
Re....
Attention ce code:
Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))


Doit être saisie SUR UNE SEULE LIGNE

JJ

"DC" a écrit dans le message de
news:43105eb2$0$27408$
Bonjour à Tous............Bonjour Jacky,

J'ai donc mis en oeuvre ta modification de macro.

et le résultat : Erreur de complilation et Erreur de Syntaxe et c'est la
1ère ligne suivante qui se met en surbrillance et chose insolite pour moi,
c'est 2 premières lignes s'écrivent en rouge dans la macro,

J'ai encore dû faire une fausse manoeuvre.!..............

Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))

Salutations.!.............Merci d'avance...........DC

"Jacky" a écrit dans le message de news:

Re...
Voir réponse précédente
JJ

"DC" a écrit dans le message de
news:43103319$0$27443$
Re Bonjour à Tous,

Petit changement dans le raisonnement.

L'idéal serait qu'au lancement de la macro, une fenêtre apparaisse,
demandant le taux de majoration à l'utilisateur, qui lui intervient
manuellement et après " Entrée " la macro continue son travail
normalement

en tenant compte de la variable, et la fenètre disparait.

Salutation.!..........Merci d'avance.........DC


"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage, une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans la
macro, ce qui peut poser un problème pour un utilisateur qui ne fait
que
travailler avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée (
Coéf_maj )


sur la feuille de travail et dans laquelle se trouverait cette valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC

















Avatar
DC
Bonjour à Tous.......Bonjour Jacky, Charles et michdenis,

J'ai ma préférence pour l'option de Jacky, qui correspond exactement à ce
que j'espérais, ( merci pour ton conseil complémentaire ), j'ai encore
appris quelque chose.!

Et vous Messieur, j'apprécie également votre travail, ansi que et la qualité
et la rapidité de vos réponses, Merci....!

Salutations.!.............Un grand Merci à Tous........DC




"Jacky" a écrit dans le message de news:
%
Re....
Attention ce code:
Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))


Doit être saisie SUR UNE SEULE LIGNE

JJ

"DC" a écrit dans le message de
news:43105eb2$0$27408$
Bonjour à Tous............Bonjour Jacky,

J'ai donc mis en oeuvre ta modification de macro.

et le résultat : Erreur de complilation et Erreur de Syntaxe et c'est la
1ère ligne suivante qui se met en surbrillance et chose insolite pour
moi,
c'est 2 premières lignes s'écrivent en rouge dans la macro,

J'ai encore dû faire une fausse manoeuvre.!..............

Coef_maj = Val(InputBox("Entrez le coefficient de majoration",
"Modification"))

Salutations.!.............Merci d'avance...........DC

"Jacky" a écrit dans le message de news:

Re...
Voir réponse précédente
JJ

"DC" a écrit dans le message de
news:43103319$0$27443$
Re Bonjour à Tous,

Petit changement dans le raisonnement.

L'idéal serait qu'au lancement de la macro, une fenêtre apparaisse,
demandant le taux de majoration à l'utilisateur, qui lui intervient
manuellement et après " Entrée " la macro continue son travail
normalement

en tenant compte de la variable, et la fenètre disparait.

Salutation.!..........Merci d'avance.........DC


"DC" a écrit dans le message de news:
43102d66$0$27422$
Bonjour à Tous,

Je dispose d'une macro, qui à pour fonction de majorer avec un
pourcentage, une plage de valeurs sélectionnées.

Seulement le pourcentage ( variable ) de majoration est inclu dans
la
macro, ce qui peut poser un problème pour un utilisateur qui ne fait
que
travailler avec le fichier.

Aussi ma question; est-il possible d'avoir une cellule nommée (
Coéf_maj )


sur la feuille de travail et dans laquelle se trouverait cette
valeur
variable et accessible à l'utilisateur.

Voici la Macro en question :

For Each c In Selection
If IsNumeric(c.Value) And c <> "" Then
c.Value = c.Value * 1.02
End If
Next c
End Sub

Salutation.!.............Merci d'avance...........DC