Ouverture Userform au clic de certaines cellules

Bonjour,

Je cherche le moyen de gérer l'utilisation de 2 Userform différents.

Dans le fichier ci-joint, j'ai matérialisé 2 zones, une en Rosé une en Vert qui sont les zones dans les quelles si je clique il apparaît un des Userform. Et uniquement dans ces zones.

Le principe étant que les Userform qui s'ouvrent n'interagissent qu'avec la cellule activée par la suite.

Merci pour votre aide!

19essai.xlsm (35.83 Ko)

Bonjour,

Cette disposition n'est vraiment pas très favorable.

As-tu (ou pas) une marge de manœuvre pour adopter une disposition comme celle du fichier joint ?

A+

16propmodif.xlsm (38.44 Ko)

Bonjour galopin01,

Je n'ai pas énormément de marge de manœuvre dans la mesure où j'ai pas mal d'interactions entre les différentes feuilles de mon fichier final.

Par contre j'ai une piste intéressante qui fonctionne pas mal (j'avance ... doucement mais quand même) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Cells(Target.Row, 1) = "motif d'abscence " Then
  MOTIF.Show
End If
If Cells(Target.Row, 1) = "Remplacant" Then
  Rempla.Show
End If
End Sub

parce que la première colonne est constante pour ces 2 lignes matérialisées.

Oui, quand même je me permet d'insister, il vaut peut-être mieux gérer dès le départ dans des conditions favorables que de partir dans la course avec un pied dans le plâtre...

J'ai adapté la partie visible de l'iceberg pour l'affichade de "Rempla"

... mais j'ai fait aussi déjà beaucoup d'adaptation que je juge indispensable

  • suppression des lignes parasites
  • suppression de la fusion ligne 4 qui parasite tout ton tableau
  • création des plages nommées NbPW et Plage
  • adaptation de la Private Sub Worksheet_SelectionChange
  • Adaptation du USF
A+

28propmodif.xlsm (36.92 Ko)

Bonjour Grem974,

tu peux essayer comme ça

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, Columns("b:af")) Is Nothing Then
        If Target.Row = 9 Or Target.Row = 12 Or Target.Row = 15 Or Target.Row = 19 Or Target.Row = 22 Or Target.Row = 25 Or Target.Row = 29 Or Target.Row = 32 Or Target.Row = 35 Or Target.Row = 38 Or Target.Row = 42 Or Target.Row = 45 Or Target.Row = 49 Then
            MOTIF.Show
        End If
    End If

    If Not Intersect(Target, Columns("b:af")) Is Nothing Then
        If Target.Row = 10 Or Target.Row = 13 Or Target.Row = 16 Or Target.Row = 20 Or Target.Row = 23 Or Target.Row = 26 Or Target.Row = 30 Or Target.Row = 33 Or Target.Row = 36 Or Target.Row = 39 Or Target.Row = 43 Or Target.Row = 46 Or Target.Row = 50 Then
            Rempla.Show
        End If
    End If
End Sub

Bonsoir et merci d vos réponses je regarde tout ça demain avec attention. Et je vous en fais un retour.

Bonjour à tous,

@galopin01 :

L'idée de départ était de constituer une trame commune à l'ensemble des services et pour l'année entière.

La séparation des fonctions IDE/ASD/secretariat ; Jour/Nuit est une contrainte imposée pour la lecture par les utilisateurs. Je ne peux pas vraiment modifier différemment. Parce que complique la lecture.

Comme c'est une TRAME commune il n'y a de "ligne parasite" que pour un service donné à un moment ou à un autre elles sont remplies par un nom et un planning. Pour faciliter la lecture je masque donc les lignes ce qui permet aussi l'impression propre du planning.

Le code suivant pose problème à quel niveau? En quoi ai-je un "pied dans le plâtre"?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Trim(Cells(Target.Row, 1)) = "Motif" And ActiveCell.Value = "" Then
      L = Target.Row
      C = Target.Column
      MOTIF.Show
    End If
    If ActiveCell.Interior.ColorIndex = 6 And ActiveCell.Value = "" Then
      L = Target.Row
      C = Target.Column
      Rempla.Show
    End If
End Sub

@Ednook :

Merci pour ta proposition ça semble bien marcher,en revanche c'est un code que je ne peux pas vraiment adapter à mon projet car beaucoup de Or et j'ai bientôt 100 lignes sur le tableur

Merci!

Re,

Tu peux tester ...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
L = Target.Row
C = Target.Column
If Trim(Target) = "Motif" Then MOTIF.Show
If Target.Interior.ColorIndex = 6 Then Rempla.Show
End Sub

Re,

Rien ne se passe au clic avec :

James007 a écrit :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
L = Target.Row
C = Target.Column
If Trim(Target) = "Motif" Then MOTIF.Show
If Target.Interior.ColorIndex = 6 Then Rempla.Show
End Sub
Grem974 a écrit :

Re,

Rien ne se passe au clic avec :

Re,

De quel clic parles-tu ...???

L'événement qui déclenche les Userform c'est l'activation de la cellule par le clic selon des conditions.

Pour lancer "Rempla" les conditions sont : Couleur jaune (que motif génère) et pas de contenu.

Pour lancer "Motif" : permière cellule de la ligne = "Motif" et pas de contenu.

Et du coup mon code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Trim(Cells(Target.Row, 1)) = "Motif" And ActiveCell.Value = "" Then
      L = Target.Row
      C = Target.Column
      MOTIF.Show
    End If
    If ActiveCell.Interior.ColorIndex = 6 And ActiveCell.Value = "" Then
      L = Target.Row
      C = Target.Column
      Rempla.Show
    End If
End Sub

Fonctionne pas trop mal ... Non?

James007 a écrit :
Grem974 a écrit :

Re,

Rien ne se passe au clic avec ...

Re,

De quel clic parles-tu ...???

Au risque de me répéter ...

Salut Grem974,

si l'espacement des lignes est régulier, tu peux paramétrer le code ainsi :

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 9 To 60 Step 3
        If Not Intersect(Target, Columns("b:af")) Is Nothing Then
            If Target.Row = i Then
                MODIF.Show
            End If
        End If

        If Not Intersect(Target, Columns("b:af")) Is Nothing Then
            If Target.Row = i + 1 Then
                Rempla.Show
            End If
        End If
Next i
    End Sub

Re a tous!

C'est que j'entends par "au clic" c'est dans les conditions précédentes, quand je clique, rien ne se passe.

Merci à tous les 3 pour cette aide précieuse! Je ne sais pas comment vous faites pour être aussi costauds sur le sujet...

Mais heureusement que vous êtes là!

Rechercher des sujets similaires à "ouverture userform clic certaines"