Créer une macro somme automatique qui s'arrête avant une ligne coloré

Bonjour à tous,

J'ai actuellement une colle sur un fichier Excel, qui me sert à importer des données depuis SAP, que je suis en train de finaliser. Je souhaiterais intégrer dans ma macro d'importation que j'ai créé un calcul de somme qui irait de la case au-dessus de ma case active jusqu'à la dernière ligne en dessous d’une ligne colorée (contenant la somme précédente) quelques lignes plus haut et qui inscrirait bien sur la somme dans ma case active. Ce qui est soit dit en passant identique à la fonction manuelle somme automatique qui va bien juste chercher les bonnes valeurs à additionner. La complexité de la chose est que lorsque je fais l'importation du fichier à l'aide de ma Macro, la ligne colorée n'est jamais à la même place selon les données donc pas possible d'utiliser la fonction avec des cellules fixes. Je ne vois pas trop comment faire la chose et je me casse pas mal la tête dessus. Je joins ci-dessous la partie du code qui gère l'intégration de ces lignes colorées dans laquelle j'ai une formule de somme mais juste pour la ligne précédente à l'heure actuelle car je ne sais pas faire mieux je suis arrivé à bout de mes compétences. Bien sûr il est tout à fait possible de le faire manuellement avec la fonction somme automatique une fois le fichier transféré, c'est juste que ça prend du temps à faire et que quitte à avoir une macro qui fait 95% du boulot de façon automatisée ce serait bien d'avoir cette partie-là d'inclus. Je vous remercie d'avance pour votre aide, n'hésitez pas à me demander plus de détail au besoin si je n'ai pas été assez clair.

Dim cellule As Range
    Set cellule = Range("c3")

    Dim numero As Integer
    numero = cellule

    Dim compteur As Integer
    compteur = 0

    Do While cellule <> ""
        If cellule <> numero Then
            cellule.EntireRow.Insert xlDown

            Set cellule = cellule.Offset(-1, 0)

            Range("n" & cellule.Row).Select
            ActiveCell.FormulaR1C1 = "=SUM(R[-1]C:R[-1]C)"
            Range("m" & cellule.Row).Select
            ActiveCell.FormulaR1C1 = "Durée Totale pour la semaine (h)"
            Selection.Font.Bold = True
            cellule.EntireRow.Select

            With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 6737151
            .TintAndShade = 0
            .PatternTintAndShade = 0
            End With

            Set cellule = cellule.Offset(1, 0)

            compteur = 1
        Else
            compteur = compteur + 1

        End If

        numero = cellule

        Debug.Print cellule, compteur

        Set cellule = cellule.Offset(1, 0)
    Loop

Bonjour,

On peut retrouver la cellule colorée en VBA, mais bon de manière générale les couleurs sont justes visuelles dans Excel, elles ne font pas partie des données de calcul. En plus pour peu que le style office change et les couleurs peuvent changer aussi. Pourquoi ne pas ajouter une colonne (on est sur XL après tout) avec un "X" par exemple sur la ligne des cellules à additionner, et simplement faire un SOMME.SI ?

Autrement si vous tenez vraiment à récupérer la couleur je peux vous proposer un code VBA mais j'aurai besoin d'un fichier type (anonymisé si besoin), avec votre export et aussi le résultat voulu par exemple dans une autre feuille. Merci.

J'avais pensé à une SOMME SI mais seulement vu que c'est une boucle qui m'intègre ces "interligne" de couleur orange sur l'image ci dessous automatiquement entre chaque employé il aurait fallu que la somme des heures totale de chaque employé soit inscrite par la boucle au fur et a mesure qu'elle avance dans le traitement du fichier. La difficulté est que chaque paramètre d'employé est différent et aléatoire selon les extractions des différentes semaines il aurait fallu que la somme des heures totale de chaque employé dans le cercle rouge soit inscrite par la boucle au fur et a mesure qu'elle avance dans le traitement du fichier en tenant compte de ces lignes à lui.

print

Je vois,

On peut vraiment faire autrement que par la couleur. De plus cela n'a pas de sens de faire une seconde macro après la boucle dont vous parlez. On peut directement ajouter les résultats lors de l'insertion de ligne.

Sinon, en gardant votre idée initiale, pour trouver la derniere ligne, au lieu de boucler ligne par ligne et regarder la couleur.. pfiou on s'endort, il suffit de se placer sur la colonne A, faire Range.End(xlDown) et pouf on arrive sur la dernière ligne de l'agent en question, il suffit de se décaler de 1 ligne et inscrire la somme. BEAUCOUP plus facile.

Si vous pouviez envoyer votre fichier anonymisé (avec vos macros), ce serait top.

En fait chaque agent est pourvu d'un classement avec un nombre généré selon son matricule et lorsque je lance la macro cette dernière classe les agents par numéro croissant et la boucle défile les lignes une à une en comparant les chiffres et a chaque fois que ce chiffre change (donc un nouvel agent) elle intègre la fameuse ligne de couleur sur laquelle je voudrais que mon total apparaisse. Je ne sais pas trop comment envoyer la macro au complet elle est assez longue et en fouillis

Rechercher des sujets similaires à "creer macro somme automatique qui arrete ligne colore"