Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Double fonction sur DoubleClick

ya_v_ka

XLDnaute Impliqué
Salut tout le monde,
et oui un nouveau soucis... j'ai réussi le code suivant:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim C As Single
C = Target.Value
Cancel = True
    If Not Application.Intersect(Target, Union(Range('a1:b2'), Range('c3:d4'))) Is Nothing Then
        C = C + 1
    End If
End Sub

mais je souhaite en plus, lors d'un doubleclick en A8, ouvrir une fenêtre me demandant de combien je veux incrémenter la celulle A8, et en faisant OK, que ca s'incrémente... mais je coince sérieux... si quelqu'un a un début de piste ?

Merci d'avance

Ya'v
 

galopin01

XLDnaute Occasionnel
Bonjour,
Prévoir un gestionnaire d'erreur...
Ok ?

Message édité par: galopin01, à: 12/03/2005 15:26
 

ya_v_ka

XLDnaute Impliqué
Salut Galopin, Le Forum

merci pour ta solution, mais petit soucis... ca ne marche pas, l'incrémentation ne se fait pas, et ta solution REMPLACE la mienne au lieu de s'y AJOUTER, et je n'arrives pas a cumuler cette fonction ?

Merci encore

Ya'v
 

Hervé

XLDnaute Barbatruc
Bonsoir tout le monde

Ya_v, as tu essayer un truc dans ce style :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim C As Single
Dim nombre As Single
C = Target.Value
Cancel = True
    If Not Application.Intersect(Target, Union(Range('a1:b2'), Range('c3:d4'))) Is Nothing Then
        C = C + 1
    ElseIf Not Application.Intersect(Target, Range('a8')) Is Nothing Then
        nombre = Application.InputBox('Quel nombre pour l'incrementation ?', 'Demande', Type:=1)
        Target.Value = Target.Value + nombre
    End If

End Sub

A plus
 

ya_v_ka

XLDnaute Impliqué
salut Hervé, le Forum

d'abord MERCI,

et oui j'ai déjà essayé comme ca (ou presque) mais si ca fonctionne à merveille pour le A8, ca désactive le reste ...

je pioche encore :whistle:

Ya'v
 

ya_v_ka

XLDnaute Impliqué
Re tous

je l'ai ..... yepee

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim N As Single
Cancel = True
    If Not Application.Intersect(Target, Union(Range('A1:B2'), Range('C3:D4'))) Is Nothing Then
        Target.Value = Target.Value + 1
    ElseIf Not Application.Intersect(Target, Range('A8')) Is Nothing Then
        N = Application.InputBox('Entrez un nombre :', 'Incrémentation', 10, Type:=1)
        Target.Value = Target.Value + N
    End If
End Sub

il 'suffisait' de ne pas mettre Target.Value en variable ou alors c'est ptet qu'elle etait mal déclarée...

Merci encore à tous

Ya'v
 

Hervé

XLDnaute Barbatruc
salut ya_v

Ce n'est pas le fait de mettre le target en variable qui ne fonctionnait pas,

c'est le fait de de pas renvoyer la valeur de la variable C dans le target.

Lors de mes testes, pour le code que je t'ai envoyée, j'avais mis target=c, après le c=c+1 et ceci fonctionnait.

Mais, c'est vrai que la variable C est inutile.

A plus
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Ya_V_Ka, Herve, Roger, le Forum

Une autre approche, pour le même résultat, mais plus rationnelle en ce qui concerne la logique de contruction d'une macro évènementielle...

Phase 1) on détecte si on est dans la zone d'action globale.
OUI = On Continue
NON = On Sort

Phase 2) on annule les fonction standard de l'évènement (pas avant la phase 1)
Cancel = True

Phase 3) on détecte dans quelle cellule on se trouve (vu qu'on est en union range) en appliquant un Select Case de la Range.Address qui va pouvoir gérer les diffirents types d'actions. Si on en avait plus que deux ce serait très pratique (bien plus que des If , ElseIf)

Voilà, juste pour vous montrer ma façon de voir le même problème :

Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim N As Single
  If Application.Intersect(Target, Union(Range('A1:B2'), Range('C3:D4'), Range('A8'))) Is Nothing Then Exit Sub
     Cancel = True
     
  Select Case Target.Address(0, 0)
      Case 'A8'
            N = Application.InputBox('Entrez un nombre :', 'Incrémentation', 10, Type:=1)
            Target.Value = Target.Value + N
      Case Else
            Target.Value = Target.Value + 1
      End Select
End Sub

Bon Dimanche à tous et toutes
@+Thierry
 

ya_v_ka

XLDnaute Impliqué
Salut Roger, Hervé, Thierry, le Forum

et vlan apprends ca... non seulement il me donne une solution mais en plus il m'apprends à progresser de par moi-même... que dire sinon M E R C I

et moi qui était content d'avoir terminé une solution bouhouuu

Merci à tous ... et à ma prochaine question

Ya'v


Si c'est en forgeant que l'on devient forgeron et en sciant que Leonard de Vinci, faut-il Exceller pour devenir Excellien ?

Message édité par: ya_v_ka, à: 13/03/2005 17:02
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…