Problèmes avec évènements feuille

Bonjour,

Malgré les exemples trouvés sur le forum, je n'arrive pas à m'en sortir avec les évènements d'une feuille.

Toutes les explications sont dans le fichier ci-joint. Je suis parvenu à faire des macros que je n'arrive pas à faire fonctionner convenablement depuis les évènements de la feuille.

Est-il possible à la sélection d'une cellule mettre en place une validation (par macro, j'ai réussi mais c'est qui la déclenche).

Merci pour votre précieuse aide.

151operations.xlsm (33.94 Ko)

Bonjour,

Teste juste avec ceci :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Range("C12:C50"), Target) Is Nothing Then

        If Target.Value <> "" Then
            Target.Resize(, 5).Borders.Weight = xlThin
        Else
            Target.Resize(, 5).Borders.LineStyle = xlNone
        End If

    End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Cel As Range

    If Not Intersect(Range("C12:C50"), Target) Is Nothing Then

        Set Cel = Cells(Target.Row, 3).End(xlUp)

        Application.EnableEvents = False

        Cel.Offset(1).Select

        Application.EnableEvents = True

    End If

End Sub

Bonjour These

C'est presque parfait. Il manque 2 choses:

1- il devient impossible de sélectionner une cellule pour la supprimer (la sélection remonte automatiquement à C12)

2- comment intégrer la macro qui récupère le montant en colonne G (la macro est dans le module1 'test')

Au vu de ton code, ça parait simple. Mais ce n'est pas évident pour moi. Je bosse dessus de hier (jusqu'à 1h15 et aujourd'hui depuis 7h du matin). J'ai effectué beaucoup de recherches.

Merci très gentil de ta part, je pourrais au moins finaliser cette partie.

Bonne soirée.

ps: pas répondu à la question: est-il possible insérer validation à la sélection d'une cellule.

Bonsoir,

J'ai avancé dans mon travail. Un dernier effort, et je pense que ça ira bien.

@These , merci pour ton aide. Dis-moi que signifie cette notation Cel.Offset(1).

généralement c'est Cel.Offset(,1) ou Cel.Offset(1,)

Avec le code ci-dessous ça semble fonctionner. Par contre, je ne suis pas parvenu à empêcher le saut de ligne. c-à-d si on est sur la ligne 15, on ne puisse pas insérer une validation et compléter la ligne 17 (dernière ligne+2). Merci pour un coup de pouce.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Range("C12:C50"), Target) Is Nothing Then
        If Not IsEmpty(Target) Then
            Call Test
            Target.Resize(, 5).Borders.Weight = xlThin
        Else
            Call SupprimerValidation
            Target.Resize(, 5).Value = ""
            Target.Resize(, 5).Borders.LineStyle = xlNone
        End If
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Cel As Range

    If Not Intersect(Range("C12:C50"), Target) Is Nothing Then
        Set Cel = Cells(Target.Row, 3).End(xlUp)

        Application.EnableEvents = False

        If IsEmpty(ActiveCell) Then
            Call InsererValidation
        End If
    End If
    Application.EnableEvents = True
End Sub

Encore merci et bonne soirée à toutes et à tous.

Bonjour,

Dis-moi que signifie cette notation Cel.Offset(1)

Par défaut, le compilateur décale vers le bas donc par ligne

généralement c'est Cel.Offset(,1) ou Cel.Offset(1,)

Ta seconde expression est fausse "Cel.Offset(1,)" dans ce cas, il faut préciser que tu ne souhaites pas décaler de colonne donc Cel.Offset(1,0)

Par contre, je ne suis pas parvenu à empêcher le saut de ligne. c-à-d si on est sur la ligne 15, on ne puisse pas insérer une validation et compléter la ligne 17 (dernière ligne+2)

Je regarde ça dès que possible !

Merci These pour tes explications et ton aide.

Effectivement, comme tu me le signales cel.Offset(1,) ou cel.Offset(1,0) décale d'une colonne vers la droite.

Tu m'apprends aussi que pour cel.Offset(1) par défaut le compilateur déplace d'une ligne vers le bas.

Existe-t-il une syntaxe par défaut pour déplacer d'une colonne?

Merci beaucoup.

Bonne journée et bon week-end.

Re,

Existe-t-il une syntaxe par défaut pour déplacer d'une colonne?

Oui, elle-ci : "Cel.Offset(,1)"

Si j'ai bien compris ce que tu souhaites :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Cel As Range

    If Intersect(Range("C12:C50"), Target) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub

        Set Cel = Cells(Target.Row, 3).End(xlUp).Offset(1)

        If Cel.Address = Target.Address Or Cel.Value <> "" Then

            If Target.Value = "" Then InsererValidation

        Else

            Application.EnableEvents = False
            Cel.Select
            Application.EnableEvents = True

        End If

End Sub

Un très grand bravo

C'est parfait, impeccable exactement le résultat souhaité.

Merci, toute ma gratitude.

Tout le plaisir est pour moi

Rechercher des sujets similaires à "problemes evenements feuille"