XL 2016 Somme et suppression de ligne

  • Initiateur de la discussion Initiateur de la discussion pierrof
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pierrof

XLDnaute Occasionnel
Bonjour à tous,

J'ai un nouveau projet, et j'aimerais à l'aide d'un code VBA, faire une somme de cellule en fonction d'une comparaison entre 2 autres cellules.
Lorsque la somme sera réalisé, je souhaite supprimer une des 2 lignes.

Je laisse un fichier exemple pour plus de clarté 🙂.

Merci d'avance de voter aide.

Cordialement
 

Pièces jointes

Solution
Voyez le fichier joint et cette macro affectée au bouton :
VB:
Sub Consolider()
Dim ncol%, colref%, d As Object, tablo, resu(), i&, x$, n&, j%, lig&
ncol = 13 'nombre de colonnes du tableau source
colref = 9 'colonne I à étudier
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la cass est ignorée
tablo = [A1].CurrentRegion.Resize(, ncol) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To ncol)
For i = 1 To UBound(tablo)
    x = Trim(tablo(i, colref))
    If Not d.exists(x) Then
        n = n + 1
        d(x) = n 'mémorise la ligne
        For j = 1 To ncol - 1
            resu(n, j) = tablo(i, j)
        Next j
    End If
    lig = d(x)
    resu(lig, ncol) = resu(lig, ncol) + Val(Replace(tablo(i, ncol)...
Voyez le fichier joint et cette macro affectée au bouton :
VB:
Sub Consolider()
Dim ncol%, colref%, d As Object, tablo, resu(), i&, x$, n&, j%, lig&
ncol = 13 'nombre de colonnes du tableau source
colref = 9 'colonne I à étudier
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la cass est ignorée
tablo = [A1].CurrentRegion.Resize(, ncol) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To ncol)
For i = 1 To UBound(tablo)
    x = Trim(tablo(i, colref))
    If Not d.exists(x) Then
        n = n + 1
        d(x) = n 'mémorise la ligne
        For j = 1 To ncol - 1
            resu(n, j) = tablo(i, j)
        Next j
    End If
    lig = d(x)
    resu(lig, ncol) = resu(lig, ncol) + Val(Replace(tablo(i, ncol), ",", ".")) 'consolide
Next i
'---restitution---
With Sheets("Consolidation")
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[A1] '1ère cellule de destination, à adapter
        .Resize(n, ncol) = resu
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
    End With
    .Columns.AutoFit 'ajuste les largeurs
    .Activate 'facultatif
End With
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
565
Réponses
16
Affichages
236
Retour