Modification en % de nombres sous excel

Résolu
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   -  
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je fais des devis sous excel, et souvent j'ai besoin de modifier les prix d'un certain pourcentage (baisser ou augmenter, dependant du client et de l'avis du chef :), Donc je me suis demande s'il serait possible de faire une macro qui applique une reduction/augmentation, en pourcentage, sur les chiffres des cellules selectionnees actuellement.

Par exemple j'ai une colonne K2 a K37 de chiffres, et je veut augmeter tous les chiffres de 5%, donc je selectionne les cellules a modifier, et je clik sur la macro, qui me demande le pourcentage, et en validant elle l'applique aux cellules selectionnees.
A voir également:

40 réponses

jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Bonjour,

essaies ce code :

Sub reduction()

reduc = Application.InputBox("Entrez un taux de réduction", Type:=1)
For i = 2 To 38
Cells(i, 11).Value = Cells(i, 11).Value * (100 - reduc) / 100
Next
End Sub

bon courrage
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
salut, merci pour ta reponse, malheureusement, je suis et vais etre tres occupe jusqu'a la fin de cette journee (oui jusqu'a minuit sinon plus), donc je te dirais si ca a marche ou pas des que j'aurais eu le temps de l'essayer.
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
la reponse que je t'ai donné n'est surement pas idéale, par contre je pense que c'est une bonne voie de recherche.

bon courrage

a+

jéjé
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Alors, j'ai enfin eu le temps de jeter un coup d'oeil a ton code, et il semble bien mis a part une chose : la plage de cellules que j'ai utilise dans mon exemple n'est pas forcement celle que j'aurais dans chaque devis. De ce fait, je souhaiterais que la macro utilise les cellules selectionnees actuelement. Un peu comme quand pour transferer certains fichiers d'un dossier a un autre on selectionne d'abbord les fichiers puis on fait couper/coller, ce qui applique les actions qu'au fichiers selectionnes.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
je n'ai pas de connaissance nécéssaire pour t'aider plus.

je crois qu'il y a une commande du style activ cellule. Ce soir je n'ai pas excel, je verrai demain du travail.

bonne soirée
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Ok, merci pour ton temps ^^

J'essaye de trouver la facon de faire par moi meme aussi, mais jusque la je n'ai vu que 2 facons possibles :

1 - Demander les cellules a modifier (cellule depart, cellule fin), demander le changement a faire (augmentation, diminution), faire l'operation

2 - Demander le changement a faire (augmentation, diminution), verifier les cellules selectionnees, faire l'operation sur les cellules

Pour la 1ere methode, je dois trouver si le programme convertit automatiquement les lettres des colonnes en nombres, et si non comment les convertir. Pour la 2eme methode je n'ai toujours pas trouve comment verifier la zone des cellules a modifier. Je sais qu'on peut utiliser l'objet Range, mais je n'ai pas vu comment lier a l'objet Cell pour l'utiliser dans une boucle, ou peut etre que c'est possible de faire la modificitation sur toutes les cellules contenues dans l'objet Range.
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Bonjour,

voici un truc sympa :

Sub augmentation()
Selection.Value = Selection.Value * 0.95

End Sub


toutes les cellules selectionnée perdent 5%

donc si tu fais ca:

Sub augmentationbis()
indice = InputBox("entrez le coeficient d'augmentation ou de reduction")
Selection.Value = Selection.Value * indice
End Sub

ca doit repondre a ton besoin
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Salut,

j'ai teste ton code mais il y a un probleme majeur : cela ne fonctionne que quand une seule cellule est selectionnee a la fois, des que je selectionne plusieurs cellules j'obtiens une erreur "Type mismatch".
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Ah?

Chez moi ça marche bien.

je ne sais pas, je vais rechercher
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
J'ai la meme erreur si une cellule sélectionnée est du texte
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Oui, c'est normal, car tu ne peut pas multiplier un texte, mais ceci n'est pas un probleme vu que l'operation ne se fera que sur des cellules dans la colonne Prix unitaire, contant que des prix. Mais comme je l'ai dit des que j'essaye d'utiliser la macro sur une selection de plusieurs cellules. Je pense que cela viens du fait qu'en selectionnant plusieures cellules a la fois Selection.Value deviens un array, contrairement a une seule cellule qui est un Integer. Je n'ai pas pense utiliser Selection.Value de cette facon car, ayant utilise d'autre langages de programmation avant, j'avais dans la tete l'idee du array, donc je ne pensais pas que la macro allais prendre chaque valeur de chaque cellule et la changer separement en faisant de la facon que tu a suggere. Mais si tu me dis que cela marche chez toi, est-ce que cela proviendrait de la version? Moi j'ai Office 2007, et la version excel correspondante.
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Moi j'ai excel 2003 sp3.
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Hmm, et tu est sur qu'en selectionnant plusieures cellules contenant des nombres ta macro marche?
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Oui, il n'y a aucun pb
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
En effet un leger probleme se produit, voici le correctif :

Sub augmentationbis()
reduc = Application.InputBox("Entrez un taux de réduction", Type:=1)
Selection.Value = Selection.Value * reduc
End Sub


desolé
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
hmmm, ca me fait toujours la meme erreur "Type mismatch"
0
jejelefou Messages postés 304 Date d'inscription   Statut Membre Dernière intervention   42
 
Je ne sais plus quoi faire. Ca ne marche plus. Désolé de vous avoir fait perdre du temps.

a+

jéjé
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Pas de probleme, tu a essaye de m'aider, alors merci ^^
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour à vous,
Je viens de lire sur Internet que : erreur "Type mismatch" veut dire que tu utilises une variable dans laquelle tu essayes de mettre une valeur qui n'est pas possible
Dans le code proposé par Jejelefou [que je salue au passage] tu indiques un type:= 1 dans l'Inputbox. Essaye sans :
Sub augmentationbis()
reduc = Application.InputBox("Entrez un taux de réduction")
Selection.Value = CInt(Selection.Value) * reduc
End Sub
0
ks13 Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   23
 
Salut, je viens de tester ta version et rien a faire, cela m'affiche toujours la meme erreur sur la meme ligne

"Type mismatch" sur la ligne "Selection.Value = CInt(Selection.Value) * reduc"
0