appliquer la formule arrondi.au.multiple

L

LILA

Guest
A l'aiiiiiiiiiiiiiiiiiide !!!!!


Je veux appliquer la formule Arrondi.au.multiple d'un seul coup sur toutes les cellules d'une feuille, sachant que ces cellules contiennent deja d'autres formules, que je ne veux pas perdre. y-a-t-il moyen d'Appliquer une formule sur des cellules contenant d'autres formules, sans les perdre, et sans avoir à refaire l'opération sur chaque cellule une à une ???


MERCI DE M'AIDER , C'EST UNE QUESTON DE VIE OU DE MORT
(JE BLAGUE.....)
 
C

chris

Guest
Bonjour
Le plus simple : sur un seconde feuille en A2 utiliser arrondi au multiple de la cellule A2 de la feuille en question puis tirer la poignée de recopie à droite et en bas pour avoir l'arrondi de toutes les cellules.

Sinon VBA.

Chris
 
A

andré

Guest
Salut LILA et chris,

Une autre méthode, en deux phases :

Sélectionner les cellules.
Edition / Remplacer / Rechercher: = / Remplacer par : =ARRONDI.AU.MULTIPLE(
Edition / Remplacer / Rechercher: ) (ou les derniers caractères identiques à toutes les cellules) / Remplacer par : ;1) (ou l'arrondi que l'on veut).

Il est difficile de donner un exemple, mais si cela ne va pas, place un petit exemple, j'essaierai d'être plus clair.

Ândré.
 
L

LILA

Guest
Merci Chris, ja'i aussi penser à cette solution mais ce n'est pas pratique dans le sens ou j'ai un classeur qui contient dix feuilles et je dois faire mes arrondi sur toutes les feuilles, sachant qu'ils ya des formules qui vont chercher des données d'une feuille à l'autre!!!


Merci André,

mais ca ne marche pas puisque les formules sont toutes différentes et variées, elles commencent toutes par = , mais elles ne finissent pas toutes par des parenthéses ), y'en que c'est des divisions, ou soustractions, il ya meme des formules qui vont chercher des données dans d'autres feuilles du même classeur. .... c'est assez compliqué mon affaire je sais .

aurez vous une autre solution pour moi
 
M

Myta

Guest
Salut Lila, Chris, André

Surement qu'une petite macro devrait resoudre le probleme

Sub Conversion_Formule()
Dim Cellule As Range
Dim Formule As String
For Each Cellule In Selection
If Cellule.HasFormula Then
Formule = Right(Cellule.Formula, Len(Cellule.Formula) - 1)
Cellule.Formula = "=ARRONDI.AU.MULTIPLE(" & Formule & ",1)"
End If
Next
End Sub

Faudrait voir pour adapter la boucle sur le nombre de feuilles et de
cellules par feuille

Mytå
 
J

Jean-Marie

Guest
Bonjour tout le monde

Myta, il faut rajouter une condition, si la valeur renvoyée par la formule de la cellule est bien numérique. Le fonctionnement de ton code est bon, mais VBA ne connaît que l'anglais et non tout autre langue donc ARRONDI.AU.MULTIPLE est à transformer en MROUND, sous peine d'un message d'erreur #NOM? au retour de la cellule.

Lila tu n'es pas obligée d'utiliser une fonction de macro-complémentaire (obligation d'installation sur la machine hôte), la fonction PLAFOND retourne exactement la même chose (CEILING en VBA)

Pour accélérer l'exécution du code, tu peux changer le mode de calcul de ton classeur. la ligne ModeCalcul = Application.Calculation récupère le mode avant modification pour le restaurer à la fin de l'exécution. La ligne Application.Calculation = xlManual fixe en mode sur ordre le calcul de la feuille.

J'ai rajouter aussi un contrôle sur le contenu de la formule, pour éviter de multiplier les arrondis d'arrondis dans la formule, dans le cas ou tu relances la macro sur la même sélection.

Sub Conversion_Formule()
Dim Cellule As Range
Dim Formule As String
Dim ModeCalcul As Integer

ModeCalcul = Application.Calculation
Application.Calculation = xlManual
For Each Cellule In Selection
If Cellule.HasFormula And IsNumeric(Cellule) Then
Formule = Right(Cellule.Formula, Len(Cellule.Formula) - 1)
If Left(Formule, 7) <> "CEILING" Then
Cellule.Formula = "=CEILING(" & Formule & ",1)"
End If
End If
Next
Application.Calculation = ModeCalcul
End Sub

Bonne journée

@+Jean-Marie
 
L

LILA

Guest
MERCI MILLE FOIS MYTA, TU ME SAUVE.....
TA MACRO FONCTIONNE TRES BIEN...

MERCI AUSSI JEAN-MARIE, MAIS C'EST BIEN LA FONCTION ARRONDI.AU.MULTIPLE (AU MULTIPLE DE 50 DANS MON CAS) DONT J'AI BESOIN, LA FONCTION CEILING NE ME DONNE PAS LES RESULTATS ATTENDUS..

SAVIEZ-VOUS QUE LA FONCTION ARRONDI.AU.MULTIPLE N'ACCEPTE PAS LES NOMBRES NEGATIFS, ELLE REND UNE ERREUR. J'IMAGINE QU'IL FAUT QUE JE RAJOUTE UN TEST AU DÉBUT DE LA BOUCLE QUI VERIFIE SI LA CELLULE EST NEGATIVE, ALORS RAJOUTER UN SIGNE MOINS DEVANT LE NOMBRE POUR LE RENDRE POSITIF ET UN AUTRE SIGNE MOINS DEVANT LA FONTION ARRONDI, POUR REDONNER UN NOMBRE RESULTAT NEGATIF, EST CE QU'IL YA QUELQU'UN QUI AURAIT UNE AUTRE IDÉE.

MERCI A TOUS

LILA
 

Discussions similaires

Réponses
3
Affichages
337

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01