[VBA-EXCEL] macro pour inverser un nombre

Résolu
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
Configuration: Windows 2000
Internet Explorer 6.0

11 réponses

  1. 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
    1. 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
      1. Contributeur
        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
        1. 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
          1. 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
            1. ya t'il moyen d'appliquer cette macro a plusieurs cellules en mm tps?
              0
              1. 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
                1. 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
                  1. 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
                    1. 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
                      1
                      1. Génial, merci

                        0
                    2. Ecrire -1 dans une cellule
                      Copier le -1
                      Slectionner les cellules à inverser
                      Edition Collage spécial multiplication
                      et c'est fini...
                      0