Inséré lignes + mise en forme entre les lignes sélectionnées

Fermé
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013 - 16 janv. 2013 à 16:45
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013 - 18 janv. 2013 à 23:46
Bonjour,

Suite à ma recherche sur la toile, j'ai trouvé le code suivant qui me permet en sélectionnant une série de ligne d'y insérer entre chaque 4 lignes. Parfait, cela fonctionne bien.

Code:
Dim x As Integer
For x = Range("A65536").End(xlUp).Row To 1 Step -1
If Not Intersect(Range("A" & x), Selection) Is Nothing Then
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown '
End If
Next

Serait-il possible que les lignes qui s'insèrent automatiquement en exécutant la macro soient de fond vert et que la lettre "x" s'insère dans la première cellule de chaque ligne insérée automatiquement?

Merci pour vos réponses

Olivier


4 réponses

Il est très probable que mon code soit inélégant voir même grossier mais si j'ai bien compris, il répond à tes attentes:

Dim x As Integer
For x = Range("A65536").End(xlUp).Row To 1 Step -1
If Not Intersect(Range("A" & x), Selection) Is Nothing Then
Rows(x).Insert Shift:=xlDown
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0

End With
Cells(x, 1) = "X"
Rows(x).Insert Shift:=xlDown
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
End With
Cells(x, 1) = "X"
Rows(x).Insert Shift:=xlDown
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Cells(x, 1) = "X"
Rows(x).Insert Shift:=xlDown '
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Cells(x, 1) = "X"

End If
Next
1
Pour la question 1, c'est facile.

je t'explique les données dans "cells(x, 1)="X""

cells(ligne,colonne)="texte à y mettre"

Donc si tu veux "Bonne année" dans la colonne D, ton code sera:
cells(x, 4)="Bonne année"

Pour la question 3, le plus simple est d'aller dans Outil/macro/nouvelle macro
tu sélectionne une cellule, tu lui mets la couleur que tu veux puis tu ferme l'enregistrement de ta macro. Puis tu vas consulter le code VBA que tu viens d'enregistrer. Il doit se trouver dans le module le plus récent. Là bas, tu copies le numéro de couleur et tu l'introduis dans le code que je t'ai donné.

Pour la question 2, tu devrais pouvoir opérer de la même manière pour savoir comment le programmer.
1
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013
17 janv. 2013 à 09:05
Bonjour Balisto76,

Merci pour ta réponse et ton code qui fonctionne bien, je l'ai donc testé ce matin sous Excel 2003 et cela fonctionne!!
J'ai juste un souci, ce code colore également les lignes séléctionnées à la base hors je voudrais que ce code ne colore que les lignes insérées automatiquement.
J'ai également quelques petites questions:
1. Comment changer la colonne dans laquelle je veux retrouver le X (dans ton code : cells(x, 1)="X", un "X" apparaît bien en dans les cellules de la colonne A des lignes insérées uniquement.
2. Est-il possible de faire en sorte que les lignes insérées soient groupées par 4 à l'insertion automatique sans devoir le faire manuellement pour chaque groupe de 4 lignes insérées?
3. Sous excel 2003, le vert claire ne porte pas de numéro, du moins ce n'est pas visible en sélectionnant la couleure de fond manuellement, je ne sais si je peux remplacer le numéro de couleur dans ton code (5266274) par un autre?

dans tout les cas merci beaucoup pour ton aide!

Olivier.
0
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 21:31
Merci Balisto76!

Je vais tester tout cela et te reviendrai ensuite pour donner un feedback.

Bien à toi,

Olivier.
0
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 23:24
Après plusieurs tests sur mon fichier tes excel 2003 je n'arrive pas à décoloriser les lignes sélectionnées, je voudrais que les lignes colorées automatiquement ne soient QUE celles insérées automatiquement... Ne connaissant rien aux codes VBA, je ne risque pas de trouver... pouvez-vous m'aider? ;-)

A la maison je travail sur excel 2011 pour mac et je ne parviens pas à faire fonctionner ce code dans un de mes tableau. Je m'explique:
Ne parvenant pas à faire fonctionner le code dans mes tableaux à la maison, j'ai donc décidé de coller un tableau dans le fichier contenant le code et qui fonctionne bien même en l'ouvrant avec excel 2011 pour mac. Je rteste donc ce test dans ce tableau fraîchement collé et là Eureka cela fonctionne! Je décide donc d'enregistrer ce fichier sous le bon nom mais au format xlsm et j'efface les données qui ont servies au fichier test... Là :-((( cela ne fonctionne plus!

Pourriez-vous m'aider svp??
Olivier
0
Olibxl Messages postés 13 Date d'inscription dimanche 11 juillet 2010 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 23:46
Voilà, j'ai refais des tests. Ce n'est pas l'enregistrement au format Xlsm qui pose problème c'est l'effacement des donnée de mon fichier test... qui comportait plus de 23 553 lignes. alors que mon tableau importé dans le fichier ne comporte que 1000 lignes environs.
Je ne comprends plus rien...
0