Re: Insérer des lignes dans un tableau |
Titre du sujet : Re: Insérer des lignes dans un tableau par Mth le 10/06/2015 00:01:15 Bonsoir Florian, bonsoir à tous,
J'ai modifié le code pour travailler colonne 3, cf ci-dessous
Option Explicit Sub Insertion() 'Déclaration des variables Dim lig As Long, i As Long With ActiveSheet 'Travaille sur l'onglet actif 'Calcule la dernière cellule remplie de la colonne C 'à adapter, par exemple pour la colonne D remplacer le 3 par 4: lig = .Cells(Rows.Count, 3).End(xlUp).Row If lig > 1 Then 'S'il y a au moins deux lignes: 'boucle de la dernière ligne à la ligne 3 (s'il y a un intitulé de colonne ligne 1) 'en remontant d'un pas de 1 For i = lig To 3 Step -1 'Teste si la cellule est différente de la cellule au dessus 'pour travailler sur la colonne D remplacer égalemet ici 3 par 4 If .Cells(i, 3) <> .Cells(i - 1, 3) Then .Cells(i, 3).EntireRow.Insert 'insérer une ligne End If 'Fin du test si cellules différentes Next i 'passage à la ligne précédente pour la boucle (For ...) End If ' Fin du premier If si ligne >1 End With 'fermeture du WITH 'appelle la macro de mise en forme Call Coloriage End Sub
Pour la question suivante il y a plusieurs pistes, une très simple par exemple consiste à écrire une formule dans une nouvelle colonne, une fois que la macro est terminée, formule qui teste la valeur de la cellule par rapport à celle du dessus et affiche un résultat (ici des points d'exclamation) selon le résultat du test. En PJ cellule E1 et copiée vers le bas: =SI(ET(D2<>0;D2
Autre piste: la mise en forme conditionnelle. Sélectionner les cellules devant appliquer la mise en forme puis voir menu Accueil/Mise en forme conditionnelle/Gérer les règles. Puis pour modifier une règle: la sélectionner et modifier Ou pour créer une nouvelle règle: cliquer sur "Nouvelle règle" puis "Utiliser une formule etc." et écrire la formule. Par exemple formule pour la condition 1: =ET($D2<>0;$D2>$D1) On peut aussi intégrer la mise en forme conditionnelle dans une macro, par exemple:
Option Explicit Sub Coloriage() 'Déclaration des variables Dim lig As Long, i As Long With ActiveSheet 'Travaille sur l'onglet actif 'Calcule la dernière cellule remplie de la colonne C 'à adapter, par exemple pour la colonne D remplacer le 3 par 4: lig = .Cells(Rows.Count, 3).End(xlUp).Row If lig > 1 Then 'S'il y a au moins deux lignes: 'travaille sur la plage de cellules colonne D With .Range("D2:D" & lig) 'efface les Mises en formes conditionnelles présentes .FormatConditions.Delete 'Ajoute une formule de mise en forme conditionnelle condition 1 'la valeur est supérieure à celle du dessus .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=ET($D2<>0;$D2>$D1)" 'Détermine la couleur verte(à adapter selon des goûts) With .FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 60113 .TintAndShade = 0 End With 'Ajoute une formule de mise en forme conditionnelle condition 1 'la valeur est inférieure à celle du dessus .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=ET($D2<>0;$D2<$D1)" 'Détermine la couleur rouge(à adapter selon des goûts) With .FormatConditions(2).Interior .PatternColorIndex = xlAutomatic .Color = 4261375 .TintAndShade = 0 End With End With End If End With End Sub
C'est ce que j'ai fait dans le fichier joint. Vois si cela peut t'aider, Bonne soirée,
mth
|
Forums