Remplissage case double clic

bonsoir à tous ,

Je vous sollicite pour un petit coup de pouce concernant une manip que j'aimerai pouvoir faire . Pour faire simple , j'aimerai que , quand je double clic sur une cellule d'une colonne particulière exemple (AA4:AA21) , celle-ci soit remplie (en orange par exemple.)

De plus , j'aimerai également si possible, que étant donné que ma colonne AA4:AA21 sera libre d'accès et que je compte verrouiller la colonne B4:B21 , quand je double clic sur une case de la colonne AA4:AA21 cela passe également la case respective de la colonne B4:B21 .

Je sais pas si je me fais bien comprendre ...

Merci d'av

Bonne soirée

Bonjour,

Si j'ai bien compris :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim couleur As Long
    If Intersect(Target, [AA4:AA21]) Is Nothing Then Exit Sub
    Cancel = True
    couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)
    Target.Interior.ColorIndex = couleur
    Cells(Target.Row, "B").Interior.ColorIndex = couleur
End Sub

eric

56classeur2.zip (7.12 Ko)

Super merci ,

je suis impressionné que cela vous vienne comme ça . Il faudrait vraiment que je me penche sur ce langage .

Encore merci

Nans


J'ai juste une petite dernière question;

Le code fonctionne sur une feuille excel à part (celle jointe)

quand je veux l'insérer sur la mienne , cela pose problème , je pense que je n'ai pas la technique . J'ai déjà un code d’écrit donc j'ai mis le votre à la suite, ce qui donne ca :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'si la cellule double cliqué n'est pas dans la zone l4:p30 on arrête la macro
    If Intersect(Target, Range("M4:Q24")) Is Nothing Then Exit Sub
    Cancel = True 'on annule la possibilité d'édition
    'on incrémente la cellule cible
    Target = Target + 1

    Dim couleur As Long
    If Intersect(Target, [AA4:AA21]) Is Nothing Then Exit Sub
    Cancel = True
    couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)
    Target.Interior.ColorIndex = couleur
    Cells(Target.Row, "B").Interior.ColorIndex = couleur

End Sub

Mais cela ne fonctionne pas ... décidément, je n'arriverai à rien tout seul ! 

Comme tu as plusieurs plage à surveiller il faut tester si la cellule appartient à l'une d'entre elles :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim couleur As Long
    If Not Intersect(Target, Range("M4:Q24")) Is Nothing Then
        'si la cellule double cliqué est dans la zone M4:Q24
        Cancel = True    'on annule la possibilité d'édition
        'on incrémente la cellule cible
        Target = Target + 1
    ElseIf Not Intersect(Target, [AA4:AA21]) Is Nothing Then
        'sinon si la cellule double cliqué est dans la zone AA4:AA21
        Cancel = True
        couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)
        Target.Interior.ColorIndex = couleur
        Cells(Target.Row, "B").Interior.ColorIndex = couleur
    End If
End Sub

eric

super merci , ca fonctionne

bonne journée

nans


le seul petit soucis est quand je verrouille la feuille j'ai un message quand je double clic en AA4 par ex :

"erreur d'exécution 1004

erreur définie par l'application ou l'objet "

et quand je vais sur débogage il me renvoi à la ligne

 Target.Interior.ColorIndex = couleur

Bonjour,

il faut déprotéger au début :

Unprotect

et protéger à la fin :

Protect

Faire suivre éventuellement de "mot_de_passe"

eric

A savoir je l'introduit comme ceci :

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim couleur As Long
        If Not Intersect(Target, Range("M4:Q24")) Is Nothing Then
            'si la cellule double cliqué est dans la zone M4:Q24
           Cancel = True    'on annule la possibilité d'édition
           'on incrémente la cellule cible
           Target = Target + 1
        ElseIf Not Intersect(Target, [AA4:AA21]) Is Nothing Then
            'sinon si la cellule double cliqué est dans la zone AA4:AA21
Unprotect
           Cancel = True
            couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)
            Target.Interior.ColorIndex = couleur
            Cells(Target.Row, "B").Interior.ColorIndex = couleur
        End If
Protect
mot_de_passe
    End Sub

... ?

Et ça fait quoi ?

N'oublie pas que tu as la touche F1 pour avoir l'aide sur une fonction que tu ne connais pas si tu veux progresser.

eric

Cela ne fonctionne pas . quand la feuille est déverrouillée tout va bien , quand elle est verrouillée , on ne peut rien en tirer , cela m'affiche l'erreur ci dessus .

j'ai cherché dans F1 et j'ai trouvé une fonction contents qui ne fonctionne pas, ou alors je ne sais pas la faire fonctionner .

met toi sur Protect et tape sur F1.

Il faut apprendre à te servir de l'aide pour le B.A.BA d'excel.

C'est exactement ce que j'ai fait, mais , je ne sais pas comment les appliquer ces formules .

Bonjour,

Protège ta feuille sans la colonne dans laquelle tu cliques dessus sinon

ActiveSheet.Unprotect pour enlever la protection tu sauras la remettre je pense (:

@+

J'ai protégée toute la feuille sauf celle où je clique dessus déjà . Dès qu'il y a une protection sur la feuille quand elle est verrouillée , ça plante

Le problème c'est que je ne sais pas comment introduire ces commandes dans le code

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim couleur As Long
        If Not Intersect(Target, Range("M4:Q24")) Is Nothing Then
            'si la cellule double cliqué est dans la zone M4:Q24
           Cancel = True    'on annule la possibilité d'édition
           'on incrémente la cellule cible
           Target = Target + 1
        ElseIf Not Intersect(Target, [AA4:AA24]) Is Nothing Then
            'sinon si la cellule double cliqué est dans la zone AA4:AA21
           Cancel = True
            couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)
            Target.Interior.ColorIndex = couleur
            Cells(Target.Row, "B").Interior.ColorIndex = couleur
        End If
    End Sub

Bon si ça plante c'est que tu ne déverrouilles pas bien ta colonne, rappel : Selection de la colonne, clique droit, format de cellule, protection et décocher vérouillée.

Sinon :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim couleur As Long

Activesheet.Unprotect ' pour déprotéger ta feuille

If Not Intersect(Target, Range("M4:Q24")) Is Nothing Then

'si la cellule double cliqué est dans la zone M4:Q24

Cancel = True 'on annule la possibilité d'édition

'on incrémente la cellule cible

Target = Target + 1

ElseIf Not Intersect(Target, [AA4:AA24]) Is Nothing Then

'sinon si la cellule double cliqué est dans la zone AA4:AA21

Cancel = True

couleur = IIf(Target.Interior.ColorIndex = 45, xlNone, 45)

Target.Interior.ColorIndex = couleur

Cells(Target.Row, "B").Interior.ColorIndex = couleur

End If

Activesheet.Protect ' pour la reprotéger

End Sub

C'est super ça fonctionne merci beaucoup

Mes cellules étaient bien verrouillées pourtant ....

Encore merci

Bonne journée

nans

Rechercher des sujets similaires à "remplissage case double clic"