Inversion du signe d'une cellule en fonction d'une autre

Bonjour,

J'ai un fichier à exploiter, qui est extrait d'un logiciel de paye, pour réaliser un bilan budgétaire. Toutefois, de nombreuses lignes sont erronées en raison de signes "+" ou "-" mal placés. Il y a un peu plus de 32000 lignes.

Pour faciliter le travail, j'ai inséré une macro qui permet d'inverser le signe d'un plage de cellule, mais la tâche est très répétitive et présente un risque important d'erreurs.

Je souhaiterais pouvoir inverser le signe des données d'une ligne en fonction d'un code de rubrique de paie. Par exemple, toutes les lignes des rubriques commençant par 900, le signe des cellules de la ligne doit être inversé. (voir fichier joint). Je n'arrive pas ajouter cette condition.

C'est pourquoi, je sollicite votre aide et vous en remercie grandement par avance.

Cordialement,

Bonjour

Dans le fichier, essaie avec ce code

Sub test()
Dim i As Integer, j As Integer
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Left(Range("A" & i), 1) = 9 Then
        For j = 2 To Cells(1, Cells.Columns.Count).End(xlToLeft).Column
            If Cells(i, j) <> 0 And Cells(i, j) > 0 Then Cells(i, j) = 0 - Cells(i, j)
        Next
    End If
Next
End Sub

Si le fichier contient vraiment 32000 lignes faut peut être penser à programmer en utilisant les tableaux VBA

Crdlt

Bonjour Dan,

Je te remercie pour ton aide et de ta réponse.

Je viens d'essayer le code, mais cela ne fonctionne pas. Pourtant, il n'y a pas de message d'erreur, ni de modification des données. Je ne comprends pas.

Merci encore

Cordialement

re

A moins que je n'ai pas compris ta demande, le code fonctionne.

Exemple :

ligne 17 en colonne A on a une rubrique qui commence par 9 (donc rubrique 900),remplace -5,86 par 5,86 (enlève les signes moins donc..)

Ensuite applique le code

A moins que si on a une signe négatif, il faut mettre un positif ?? Dans ce case essaie ceci :

Sub test()
Dim i As Integer, j As Integer
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    If Left(Range("A" & i), 1) = 9 Then
        For j = 2 To Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        Select Case Cells(i, j)
            Case Is > 0: Cells(i, j) = 0 - Cells(i, j)
            Case Is < 0: Cells(i, j) = Cells(i, j) * -1
        End Select
        Next
    End If
Next
End Sub

Si ok, oublie pas de clôturer le fil

Cordialement

Bonjour Dan,

Je te remercie de ton aide précieuse, cela fonctionne parfaitement.

Une épine de moins !

Merci !

Cordialement,

Rechercher des sujets similaires à "inversion signe fonction"