VBA - Sommes et suppression de ligne
Bonsoir,
Il reste, a priori, un dernier souci sur ce document pour qu'il fonctionne parfaitement.
J'ai testé des méthodes qui me semblaient fonctionnelles, sans succès... Je ne pense pas m'y prendre correctement.
Ce que je cherche à faire :
En partant de la dernière ligne, si les informations entre la dernière ligne et celle juste au dessus (en colonne [A] ) sont identique alors :
Colonne [F] : additionner les valeurs (entre les deux lignes donc) sur la cellule du haut
Supprimer la ligne identique du dessous.
Réitérer l'opération.
Plus concis : Additionner les valeurs de la colonne [6] lorsque les valeurs de la colonne [1] sont identiques.
Puis supprimer la ligne en double en utilisant la colonne [1] (mais sans supprimer la ligne où la somme a été faite).
J'ai fait ceci :
Private Sub CommandButton1_Click()
Dim LastR As Long
LastR = Cells(Rows.Count, "A").End(xlUp).Row
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For t = LastR To 4 Step -1
'For f = 1 To 13
If Cells(t + 1, 1).Value = Cells(t + 1, 1).Value Then _
' Ne fonctionne pas, je ne sais pas comment additionner en utilisant cette méthode, ce n'est peut être pas possible ...
.Sum (Range(Cells(t, 6), Cells(t + 1, 6)
'Petit soucis, ça me supprime toutes les lignes sauf la première...
Cells(t + 1, 5).EntireRow.Delete
Next
'Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
J'ai ajouté un document Excel, si vous souhaitez voir mon code en action.
Il est tard, je m'y intéresserai à nouveau demain, si je trouve une solution je posterai à la suite.
Je vous remercie de votre attention,
A plus tard !
Bonne soirée / nuit
Salut Le Drosophile,
voici avec un petit tableau-exemple en 'A'.
Double-clic sur la feuille 'A' pour démarrer la macro.
Vu la présence d'autres macros, il conviendrait peut-être, si tu comptes utiliser cette fonction régulièrement, de préciser un mode de déclenchement plus précis!
En l'état, pour le test, ça suffit encore!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Cancel = True
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
For x = Range("A" & Rows.Count).End(xlUp).Row To 3 Step -1
If Cells(x, 1) = Cells(x - 1, 1) Then
Cells(x - 1, 6) = Cells(x, 6) + Cells(x - 1, 6)
Rows(x).Delete Shift:=xlUp
End If
Next
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub
A+
Bonjour,
C'est assez bizarre, le tableau que j'ai upload qui est dans mon ordinateur est très différent de celui qui se trouve sur le forum. Il n'est pas censé y avoir de code et les tableaux ne sont pas les mêmes.
Je vais tester votre solution !
Pour le moment j'ai le message d'erreur d'exécution n°13 : "Incompatibilité de type".
J'ai compris d'où vient le problème... Ça va encore être la galère.
Le drosophile a écrit :Pour le moment j'ai le message d'erreur d'exécution n°13 : "Incompatibilité de type".
J'ai compris d'où vient le problème... Ça va encore être la galère.
quel bel enthousiasme !
dhany