coller l'inverse d'une cellule

teter

XLDnaute Junior
Bonjour à tous,

C'est vendredi donc la question est relativement simple (mais je n'ai pas la soluce).

Je récupère dans une macro les données de certaines cellules que je colle ailleurs. Pour simplifier : Range("A1").Copy Range("A2").
Ces valeurs sont numériques et je souhaite coller l'inverse soit -8.25, si j'ai 8.25 en A1.

Qq'un aurait un idée ?

Merci

Bon WE

Teter
 
G

Guest

Guest
Re : coller l'inverse d'une cellule

bonjour teter,

Si A1 est positif retrancher A1 de zéro sinon renvoyer l'absolu de A1

If sng(Range("A1")=1 then Range("A2")= 0-Range("A1") else(Range("A2")=Abs(Range("A1"))

A+
 

teter

XLDnaute Junior
Re : coller l'inverse d'une cellule

Merci Hasco,

Mais je ne sais pas comment l'insérer ici :

For Each x In Sheets("F1").Range("J2:" & Range("J65536").End(xlUp).Address)
If x = "ST" And x.Offset(0, 26) = "HI" And x.Offset(0, 28) = "RECU" Then
Cells(x.Row, 5).Copy (Sheets("F2").Range("B65536").End(xlUp).Offset(1, 0))

Merci

A+

Teter
 
G

Guest

Guest
Re : coller l'inverse d'une cellule

Re,

Deux solutions:

Soit tu tiens absolument à un copier coller et tu choisis la première bien que plus lente

Code:
    Dim valeur
    For Each x In Sheets("F1").Range("J2:" & Range("J65536").End(xlUp).Address)
        If x = "ST" And x.Offset(0, 26) = "HI" And x.Offset(0, 28) = "RECU" Then
            valeur = Iff(sng(Cells(x.Row, 5)) = 1, 0 - Cells(x.Row, 5), Abs(Cells(x.Row, 5)))
            Cells(x.Row, 5).Copy (Sheets("F2").Range("B65536").End(xlUp).Offset(1, 0))
            Sheets("F2").Range("B65536").End(xlUp) = valeur
        End If
    Next

Soit tu affectes ta cellule de destination directement sans copier coller c'est plus rapide mais tu perds les formats.
Code:
    Dim Valeur
    For Each x In Sheets("F1").Range("J2:" & Range("J65536").End(xlUp).Address)
        If x = "ST" And x.Offset(0, 26) = "HI" And x.Offset(0, 28) = "RECU" Then
            valeur = Iff(sng(Cells(x.Row, 5)) = 1, 0 - Cells(x.Row, 5), Abs(Cells(x.Row, 5)))
            Sheets("F2").Range("B65536").End(xlUp).Offset(1, 0) = valeur
        End If
    Next

A+
 

teter

XLDnaute Junior
Re : coller l'inverse d'une cellule

Bonjour,

Je me doutais que c'était vraiment simple mais à ce point.
Je me suis inspiré de vos réponses pour au choix :

Sheets("F2").Range("B65536").End(xlUp).Offset(1, 0) = Cells(x.Row, 5) * -1
ou
Sheets("F2").Range("B65536").End(xlUp).Offset(1, 0) = 0 - Cells(x.Row, 5)

Merci encore

A+

Teter
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 595
Messages
2 090 094
Membres
104 374
dernier inscrit
cheick.coulibaly@dcsmali.