XL 2010 Somme sous condition et comparaison

jpp1230

XLDnaute Nouveau
Bonjour,
Je ne suis pas très fort en informatique, normalement j'arrive a me débrouiller avec internet mais je suis coincé sur ce fichier de données.
Tout d'abord c'est un fichier de données qui évolue en permanence, des données sont rajoutées tous les jours.
Il faut supprimer les doublons (lignes complètement identique).J'ai trouvé une solution sur internet.
Il sert a contrôler les données, il faut donc faire la sommes de la colonne E entre les cellules pleine de B et comparer avec la première cellule pleine du haut.
J'ai mis un exemple car difficile à expliquer
La solution idéale serai en VBA pour verrouiller par la suite et que personne ne puissent modifier les formules
Merci
 

Pièces jointes

  • Base de données.xlsm
    638.2 KB · Affichages: 40

M12

XLDnaute Accro
Bonjour,

Voilà avec une autre macro qui effectue d'abord la suppression des lignes vides par rapport à la colonne C, puis la suppression des doublons par rapport à la colonne B
 

Pièces jointes

  • Base de données (1) (1).xlsm
    630.9 KB · Affichages: 27

jpp1230

XLDnaute Nouveau
Merci pour ces réponse rapide, pour la formule des doublons elle est très bien mais j'aimerais garder celle ci dessous car beaucoup plus le choix dans le traitement de ceux-ci.
Je voudrais simplement la modifier pour quelle contrôle que toute la ligne soit identique et non pas une seule colonne.
VB:
Sub doublons_et_lignes_vides()

    'Macro : Sébastien Mathier - Excel-Pratique.com
    'A propos de cette macro : www.blog-excel.com/gerer-doublons-et-lignes-vides/

    choix = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & "Choisissez l'action qui vous intéresse :" & Chr(10) & Chr(10) & "1. Colorer les doublons (colorer la cellule)" & Chr(10) & "2. Colorer les doublons (colorer la ligne entière)" & Chr(10) & "3. Effacer les doublons (en laissant la ligne vide)" & Chr(10) & "4. Supprimer les doublons (ligne entière)" & Chr(10) & "5. Supprimer les lignes vides" & Chr(10) & Chr(10) & "Entrez le n° de l'action et cliquez sur OK :", "Gestion des doublons - Blog-Excel.com")
    If choix = "" Then Exit Sub

    choix2 = "A"
    If choix = 1 Or choix = 2 Or choix = 3 Or choix = 4 Then choix2 = InputBox("Entrez la lettre de la colonne où les doublons doivent être recherchés :", "Gestion des doublons - Blog-Excel.com", choix2)
    If choix = 5 Then choix2 = InputBox("Entrez la lettre de la colonne à prendre en compte (si la cellule de cette colonne est vide, la ligne sera supprimée) :", "Gestion des doublons - Blog-Excel.com", choix2)
    If choix2 = "" Then Exit Sub

    Application.ScreenUpdating = False
    test = Timer

    der_ligne = Range(choix2 & "65000").End(xlUp).Row

    Dim tab_cells()
    ReDim tab_cells(der_ligne - 1)

    For ligne = 1 To der_ligne
        tab_cells(ligne - 1) = Range(choix2 & ligne)
    Next

    nb = 0
    If choix = 4 Or choix = 5 Then compteur = 0

    For ligne = 1 To der_ligne
        contenu = tab_cells(ligne - 1)

        If (choix = 1 Or choix = 2) And contenu <> "" Then 'Colorer doublons
            For i = 1 To der_ligne
                If contenu = tab_cells(i - 1) And ligne <> i Then 'Si doublon
                    nb = nb + 1
                    If choix = 1 Then
                        Range(choix2 & ligne).Interior.ColorIndex = 3
                    Else
                        Range(ligne & ":" & ligne).Interior.ColorIndex = 3
                    End If
                    Exit For
                End If
            Next
        End If

        If (choix = 3 Or choix = 4) And ligne > 1 And contenu <> "" Then 'Effacer/supprimer doublons
            For i = 1 To ligne - 1
                If contenu = tab_cells(i - 1) Then 'Si doublon
                    nb = nb + 1
                    If choix = 3 Then
                        Range(ligne & ":" & ligne).ClearContents
                    Else
                        Range(ligne + compteur & ":" & ligne + compteur).Delete
                        compteur = compteur - 1
                    End If
                    Exit For
                End If
            Next
        End If

        If choix = 5 And contenu = "" Then 'Lignes vides
            Range(ligne + compteur & ":" & ligne + compteur).Delete
            compteur = compteur - 1
            nb = nb + 1
        End If
    Next

    res_test = Format(Timer - test, "0" & Application.DecimalSeparator & "000")
    Application.ScreenUpdating = True

    If nb = 0 And choix = 5 Then
        dd = MsgBox("Aucune ligne vide trouvée ...", 64, "Résultat")
    ElseIf nb = 0 Then
        dd = MsgBox("Aucun doublon trouvé dans la colonnne " & UCase(choix2) & " ...", 64, "Résultat")
    ElseIf choix = 5 Then
        dd = MsgBox(nb & " lignes supprimées (en " & res_test & " secondes)", 64, "Résultat")
    ElseIf choix = 4 Then
        dd = MsgBox(nb & " doublons supprimés (en " & res_test & " secondes)", 64, "Résultat")
    ElseIf choix = 3 Then
        dd = MsgBox(nb & " doublons effacés (en " & res_test & " secondes)", 64, "Résultat")
    Else
        dd = MsgBox(nb & " doublons passés en rouge (en " & res_test & " secondes)", 64, "Résultat")
    End If

End Sub
Si tu regarde sur le fichier j'ai créé la colonne A qui est masqué pour comparer ces lignes mais je voudrais me passer de cette colonne.
Dernière petite demande sur ta formule de comparaison est t'il possible que si la différence des totaux est inférieur ou egal à 1 on soit quand même vert.
Merci encore de toute l'aide que tu m'apportes
 

M12

XLDnaute Accro
Re,

Bon, j'ai légérement modifié l'inputbox et ramener la colorisation dessus
les doublons sont toujours par rapport à la colonne A, mais les données sont remplies par VBA sur les lignes concernées (puis effacées après le calcul)
La formule de comparaison est modifié aussi à ta demande
 

Pièces jointes

  • Base de données (1) (1).xlsm
    47.4 KB · Affichages: 29

jpp1230

XLDnaute Nouveau
Merci encore pour tout, c'est exactement ce qui me faut.
Merci aussi de ta patience
Juste un petit problème sur la formule de comparaison qui met toujours en rouge si 1 point d'écart, étant donnée que c'est des tonnage il sont souvent arrondie et c'est pour cela que çà se produit souvent.
Normalement sur le fichier joint seule les lignes 7 et 120 devraient être rouge, les lignes 130, 195, 245, et 262 devraient être verte car un seul point d'écart.
Si cela ne te dérange pas pour que je puisses progresser peux tu commenter un peu les codes que tu as fait, cela me permettra de comprendre et d'adapter ce code à un autre fichier que je suis en train de créer.
 

Pièces jointes

  • Base de données final.xlsm
    47.1 KB · Affichages: 24

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16