Sauter une ou plusieurs lignes si elles sont colorées

degap05

XLDnaute Impliqué
Bonjour,

Pourriez-vous m'indiquer un code pour sauter ou ignorer une ou plusieurs lignes dont les cellules sont colorées (quelque soit la couleur).

Cela s'appliquerait à la saisie de données par un userform (déjà en place), qui renseigne les cellules des colonnes C,D,E,F et H, ligne par ligne. Chaque ligne correspond à un jour de la semaine. Les lignes des samedi et dimanche sont colorées au préalable. Lorsque les données du vendredi sont saisies, il faudrait sauter le samedi et le dimanche et passer à la ligne du lundi. Cela s'appliquerait à d'autres cas, jours fériés, congés, RTT, etc.... tous ces jours ont une couleur de ligne différente. Est-ce qu'il y aurait moyen d'adapter ce code ?:

Private Sub Worksheet_Change(ByVal Target As Range)

With Cells("A:A")
If .Interior.Color
. ' sauter la ou les cellules colorées.
End If
End With

End Sub

Merci pour votre aide.
 

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonsoir,

une cellule non coloré a comme couleur "-4142":

With Cells("A:A")
If .Interior.ColorIndex=-4142
. ' sauter la ou les cellules colorées.
End If
End With
 

jmd2

XLDnaute Accro
Re : Sauter une ou plusieurs lignes si elles sont colorées

hello

conseil éternel, ne pas se baser sur des mises en forme,mais sur le contenu.

donc tu vas avoir un truc du genre if (samedi ou dimanche)
(gérer des données est généralement plus facile que de gérer des couleurs)
il te suffit de tester si ta date est samedi ou dimanche

courage
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonsoir,

Je viens de trouver cette macro qui fonctionne, pour une couleur.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex = 3 Then
Target.Offset(1, 0).Select
End If
End Sub


Comment ajouter d'autres couleurs, dans la même macro ?

Merci
 

Robert

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonsoir le fil, bonsoir le forum,

Essaie comme ça :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Interior.ColorIndex
    Case 3, 4, 5, 6, 7 'à adapter
    Target.Offset(1, 0).Select
End Select
End Sub
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonsoir, merci à tous et en particulier à Robert.

Ta solution fonctionne parfaitement.:):)
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonjour,

Robert m'a proposé une solution qui fonctionne très bien, pour sauter les cellules en couleur.

Pensez-vous qu'il soit possible de l'inclure dans le code d'un userform, que je joins:

Private Sub CommandButton1_Click()
Dim LastRow As Object

Set LastRow = ActiveSheet.Range("C65536").End(xlUp)

LastRow.Offset(1, 0).Value = TextBox1.Text
LastRow.Offset(1, 1).Value = TextBox2.Text
LastRow.Offset(1, 2).Value = TextBox3.Text
LastRow.Offset(1, 3).Value = TextBox4.Text
LastRow.Offset(1, 5).Value = TextBox5.Text

MsgBox "L'horaire est bien enregistré"

response = MsgBox("Un autre jour à renseigner?", _
vbYesNo)

If response = vbYes Then
TextBox1.Text = TextBox1.Text
TextBox2.Text = TextBox2.Text
TextBox3.Text = TextBox3.Text
TextBox4.Text = TextBox4.Text
TextBox5.Text = TextBox5.Text
TextBox1.SetFocus

Else
Hide
End If

End Sub

Le but serait que les données renseignées sautent les lignes en couleur.

Merci pour votre savoir faire.
 

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonjour,

comme ceci je pense, en déclarant aussi LastRow en tant que "range", plus juste.


Code:
Private Sub CommandButton1_Click()
Dim LastRow As [B][COLOR=blue]Range[/COLOR][/B]
 
Set LastRow = ActiveSheet.Range("C65536").End(xlUp)
[B][COLOR=blue]Select Case LastRow .Interior.ColorIndex[/COLOR][/B]
[B][COLOR=blue]   Case 3, 4, 5, 6, 7 'à adapter[/COLOR][/B]
[B][COLOR=blue]   LastRow.Offset(1, 0).Value = TextBox1.Text[/COLOR][/B]
[B][COLOR=blue]   LastRow.Offset(1, 1).Value = TextBox2.Text[/COLOR][/B]
[B][COLOR=blue]   LastRow.Offset(1, 2).Value = TextBox3.Text[/COLOR][/B]
[B][COLOR=blue]   LastRow.Offset(1, 3).Value = TextBox4.Text[/COLOR][/B]
[B][COLOR=blue]   LastRow.Offset(1, 5).Value = TextBox5.Text[/COLOR][/B]
[B][COLOR=blue]End Select[/COLOR][/B]
.............
..........
...........
par contre ces lignes ne servent à rien non?


TextBox1.Text = TextBox1.Text
TextBox2.Text = TextBox2.Text
TextBox3.Text = TextBox3.Text
TextBox4.Text = TextBox4.Text
TextBox5.Text = TextBox5.Text

:confused:
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonjour, Skoobi,

Je viens d'essayer et j'ai la ligne suivante en rouge et le userform bloque:

Select Case LastRow .Interior.ColorIndex


Qu'en penses-tu ?
 

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Re,

oupsss, enlève l'espace entre "LastRow" et ".Interior".
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Tu es vraiment sympa de t'occuper de mon cas :)

J'ai fait comme tu m'as dit, mais maintenant lorsque je valide il ne se passe rien.

Les horaires seraient renseignés dans les premières lignes et sauteraient les lignes colorées, si cela fonctionnent.

J'ai installé dans un classeur joint, pour que tu vois mieux.

Merci encore.
 

Fichiers joints

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Re,

actuellement la macro du bouton "valider" cherche la dernière cellule non vide de la colonne C.
Si cette cellule n'est pas coloriée et bien rien ne se passe, logique.
Dans le fichier que tu m'envoie, la colonne C est vide donc la cellule reconnu comme dernière est C1 qui n'est pas coloriée, tu me suis?
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

J'essaie de comprendre.....

J'ai coloré la ligne complète, A1,I1 et ainsi j'ai pu renseigner la ligne suivante, mais uniquement une ligne......
Le but que je recherche est de renseigner toutes les lignes non colorées et de sauter les lignes colorées.
La macro de Robert, fonctionne bien pour cela, mais comment l'incorporer à l'userform ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Interior.ColorIndex
Case 35 'par exemple
Target.Offset(1, 0).Select
End Select
End Sub

J'ai essayé pas mal de fois, mais l'userform s'en moque complètement et continue d'envoyer les données sur les cellules colorées et ne les saute pas, comme le fait si bien la macro.

Que faut-il faire, alors ?
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Si tu veux traiter toute la colonne, il faut faire ceci:

Code:
 [B]Set LastRow = ActiveSheet.Range([C1], [C65536].End(xlUp))[/B]
Select Case LastRow .Interior.ColorIndex
   Case 3, 4, 5, 6, 7 'à adapter
   LastRow.Offset(1, 0).Value = TextBox1.Text
   LastRow.Offset(1, 1).Value = TextBox2.Text
   LastRow.Offset(1, 2).Value = TextBox3.Text
   LastRow.Offset(1, 3).Value = TextBox4.Text
   LastRow.Offset(1, 5).Value = TextBox5.Text
End Select
..........
...........
................
La macro de Robert est une macro évènementielle qui s'exécute automatiquement lors d'une sélection d'une autre cellule dans la feuille.
Il faudra supprimer cette macro.
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Oui bien sûr, j'avais supprimé la macro de Robert:p

Désolé, mais pareil, enregistrement possible d'une seule ligne en 2 (de A2 à H2), puis plus rien. Le bouton "valider" est inactif et l'userform reste affiché jusqu'à "annuler".

?????:(
 

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Et ceci?

For Each cellule In Range ([C1], [C65536].End(xlUp))
Select Case cellule.Interior.ColorIndex
Case 3, 4, 5, 6, 7 'à adapter
cellule.Offset(1, 0).Value = TextBox1.Text
cellule.Offset(1, 1).Value = TextBox2.Text
cellule.Offset(1, 2).Value = TextBox3.Text
cellule.Offset(1, 3).Value = TextBox4.Text
cellule.Offset(1, 5).Value = TextBox5.Text
End Select
Next
..........
...........
................
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonsoir,

Exactement pareil, possibilité de renseigner une seule ligne. A la deuxième, le bouton "valider" reste inactif.
 

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Re, bonjour,

envoie un bout du fichier (avec des données cette fois-ci :D) pour y voir plus clair.
 

degap05

XLDnaute Impliqué
Re : Sauter une ou plusieurs lignes si elles sont colorées

Bonjour, Skoobi,

Je joins un fichier, sur lequel j'ai mis les explications.

Ne te prends pas la tête avec:(

Si la solution est trop compliquée à mettre en place ou demande à remanier la feuille, laisse tomber:)

Merci beaucoup.
 

Fichiers joints

skoobi

XLDnaute Barbatruc
Re : Sauter une ou plusieurs lignes si elles sont colorées

Re,

voici le code du bouton "valider" modifié:

Code:
 Private Sub CommandButton1_Click()
          Dim LastRow As [B][COLOR=Blue]Range[/COLOR][/B]
[COLOR=Blue][B] For Each cellule In Range([C6], [C65536].End(xlUp))
Select Case cellule.Interior.ColorIndex
Case -4142  'pas de couleur
cellule.Offset(0, 0).Value = TextBox1.Text
cellule.Offset(0, 1).Value = TextBox2.Text
cellule.Offset(0, 2).Value = TextBox3.Text
cellule.Offset(0, 3).Value = TextBox4.Text
cellule.Offset(0, 5).Value = TextBox5.Text
End Select
Next[/B][/COLOR]
MsgBox "L'horaire est bien enregistré"
          response = MsgBox("Un autre jour à renseigner?", _
              vbYesNo)
          If response = vbYes Then
              TextBox1.Text = TextBox1.Text
              TextBox2.Text = TextBox2.Text
              TextBox3.Text = TextBox3.Text
              TextBox4.Text = TextBox4.Text
              TextBox5.Text = TextBox5.Text
              TextBox1.SetFocus
          Else
          Hide
          End If
      End Sub
 

Discussions similaires


Haut Bas