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 -
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.
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:
- Modification en % de nombres sous excel
- Suivi de modification word - Guide
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Nombre de jours entre deux dates excel - Guide
40 réponses
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
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
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.
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é
bon courrage
a+
jéjé
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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
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".
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".
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.
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é
Sub augmentationbis()
reduc = Application.InputBox("Entrez un taux de réduction", Type:=1)
Selection.Value = Selection.Value * reduc
End Sub
desolé
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 :
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