[VBA-EXCEL] macro pour inverser un nombre

Résolu/Fermé
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 - 9 oct. 2008 à 10:21
 120 - 9 oct. 2008 à 12:06
Bonjour,

je voudrais savoir si quelqu'un connait une macro pour inverser les nombres d'une selection de cellule d'une feuille excel ?

exemple :
passer de -45.987 à 45.987
-78.269 78.269
-48.561 48.561
voila merci d'avance
A voir également:

11 réponses

photodia56 Messages postés 2326 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 20 novembre 2019 151
9 oct. 2008 à 10:27
C'est probablement pas la solution la plus élégante mais tu devrais pouvoir utiliser la fonction "si".
Par exemple: "si (ton résultat <0) alors "= (- ton résultat)"
Ma présentation est fausse mais c'est dans cet esprit.
0
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 277
9 oct. 2008 à 10:29
oui c'est comme ça qu'il vaut mieux faire:

syntaxe exacte:

=SI(A1<0;-A1;A1)

par macro ça donne:

if (range("A1").value<0 then range("A1").value = -range("A1").value


il en faut pas plus
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 oct. 2008 à 10:33
Bonjour,

Il y a aussi la fonction ABS(tonnombre) cad "valeur absolue"
mais pourquoi avoir mis cette question en Programmation? c'est plutôt de la bureautique...de toutes façons c'est la m^me fonction en VBA
0
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 5
9 oct. 2008 à 10:49
en fait j'ai enormement de cellules a changer (10 plages de 5 cellules sur 12 feuilles) donc je voulais un moyen plus rapide que d'aller faire une fonction excel dans chaque cellule. je voudrais selectionner une plage de cellule et lancer une macro pour que ca passe soit en negatif soit en positif ( j'ai les deux cas).
0

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

Posez votre question
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 277
9 oct. 2008 à 10:51
dans ce cas je te conseille une macro comme celle que je t'ai mise, sauf qu'elle prendrait la cellule selectionnée au lieu de A1 ainsi:



Selection.value = -Selection.value


y a pas besoin de plus, tu selectionne ta case, et tu fais ton raccourci pour lancer ta macro

0
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 5
9 oct. 2008 à 10:56
ya t'il moyen d'appliquer cette macro a plusieurs cellules en mm tps?
0
Leahkim Messages postés 3079 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 277
9 oct. 2008 à 11:01
ba la je sèche un peu ...

a moins de se prendre la tete et de tester les cellules alentours, et si elles ont une valuer, l'inverser...
0
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 5
9 oct. 2008 à 11:31
bon ce n'est pas tres joli la facon odont jai fait ca mais voila le resultat

sub inverser()
Dim i As Integer
For i = 1 To 7
If Selection.Cells(i, 1).Value <> "N/A" Then
With Selection
.Cells(i, 1).Value = -Selection.Cells(i, 1).Value
End With
End If
Next i
End Sub

je ne suis pa arriver a trouver comment remplacer 7 par une variable ( nombre de ligne selectionnées ca sera toujours 7)

si vous arriver à trouver une amélioration je suis preneuse :)

merci pour vos réponses
0
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 5
9 oct. 2008 à 11:56
bon j'ai encore trouvé mieux je pense que ce coup-ci c'est pas mal car on peut faire la selection de cellules que l'on veut

Public Sub inverser()
Dim cell As Range
For Each cell In Selection.Cells
    If cell.Value <> "N/A" Then
        With cell
        .Value = -cell.Value
        End With
    End If
Next cell
End Sub
0
anyah Messages postés 58 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 28 décembre 2008 5
9 oct. 2008 à 11:59
dsl c'etait la mauvaise version ( elle rajoutait un zero dans les cases vides) voila la bonne , j'espere que ca aidera quelqu'un un jour....

Public Sub inverser()
Dim cell As Range
For Each cell In Selection.Cells
    If cell.Value <> "" Then
        If cell.Value <> "N/A" Then
            With cell
            .Value = -cell.Value
            End With
        End If
    End If
Next cell
End Sub
0
Ecrire -1 dans une cellule
Copier le -1
Slectionner les cellules à inverser
Edition Collage spécial multiplication
et c'est fini...
0