Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…