Macro formule jusqu'à la dernière cellule non vide

romdurk

XLDnaute Nouveau
Bonjour,

J'ai parcouru le forum sans pouvoir trouver réponse à ma question. Bref, dans la colonne B, j'ai des Avoirs et Factures. En colonne C, le montant HT.

Je souhaiterais avoir une macro qui réalise cette démarche:

1- Je mets des filtres en ligne 2.

2- Je selectionne uniquement les avoirs

3- Je transforme les montants (colonne C) en négatif (j'aimerais avoir les montants des avoirs en négatif).

L'idée étant de rendre la démarche automatique: il faut donc trouver une macro qui séléctionne automatiquement la première ligne visible après filtre, jusqu'à la dernière visible. (chaque mois, ça change!)

JE vous remercie par avance pour votre aide!
 

Pièces jointes

  • Test.xlsm
    91.2 KB · Affichages: 44

M12

XLDnaute Accro
Bonjour,
A tester ce code à mettre dans un module

Code:
Sub Test()

Dim F1 As Range
Dim i As Integer
Dim DernLigne As Long

    DernLigne = Range("b" & Rows.Count).End(xlUp).Row
    Set F1 = Sheets("Feuil1").Range("b2:b" & DernLigne)
        Range("B2:C2").Select
        Selection.AutoFilter
        ActiveSheet.Range("B2:B" & DernLigne).AutoFilter Field:=1, Criteria1:="Avoir"
        Range("B3").Select
       
            For i = 2 To F1.Rows.Count
                If F1(i, 1).Value = "Avoir" And F1(i, 2).Value > 0 Then
                    F1(i, 2).Value = F1(i, 2).Value * -1
                End If
            Next i
End Sub
 

romdurk

XLDnaute Nouveau
Mille Merci!

Cependant, j'aurais une dernière petite remarque à faire (que je pense trivial pour vous...)

La macro est applicable pour les montants colonne C. Pourrais-je avoir SVP la macro pour les montants en colonne I? (la colonne facture/avoir restant en colonne B)

Merci!
 

M12

XLDnaute Accro
Re,

Remplace
Code:
For i = 2 To F1.Rows.Count
                If F1(i, 1).Value = "Avoir" And F1(i, 2).Value > 0 Then
                    F1(i, 2).Value = F1(i, 2).Value * -1
                End If
            Next i
par

Code:
For i = 2 To F1.Rows.Count
                If F1(i, 1).Value = "Avoir" And F1(i, 8).Value > 0 Then
                    F1(i, 8).Value = F1(i, 8).Value * -1
                End If
            Next i
 

Discussions similaires

Réponses
6
Affichages
207

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry