Incrémenter une plage excel

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 5 oct. 2010 à 13:54
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 6 oct. 2010 à 20:39
Bonjour à tous,
Qqn aurait-il une idée pour incrémenter une plage à chaque clic.
Pour ma part j'utilise "Selection_change de ma feuille" le hic c'est que je doit à chaque fois cliquer sur une autre plage et revenir ensuite a la plage qui doit être incrémenter (1, 2,3,4 etc....)

Je suis preneur de toute idée ou code merci d'avance



Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 oct. 2010 à 23:58
Ha, d'accord, je n'avais pas saisi.
En effet, point de solution puisqu'il n'y a pas eu de modif, pas de recalcul nécessaire.
La seule solution est d'utiliser les APIs pour lire l'état des boutons de la souris.
Mais cela risque d'être compliqué sous VBA.
Il faut "hooker" (faire un hook) des évènements windows et filtrer les infos en rapport avec les boutons de la souris.
Je n'ai pas ça sous la main.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
1
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 oct. 2010 à 20:40
Salut Jean-Paul

"Incrémenter" ?
Passer le contenu d'une cellule de X à X+1 ?
ou bien passer à la cellule suivante ? (dessus, dessous, à gauche, droite ?)

"à chaque clic" ?
Clic sur quoi ?

Si tu parles d'incrémenter la valeur d'une cellule et que tu sois obligé de changer de sélection, c'est que le code que tu utilises doit utilise l'objet Selection, ce qui n'est pas recommandé.
Utilise plutôt un objet Range :
    Dim oRange As Range
    Set oRange = Range("A4012")
    oRange.Value = oRange.Value + 1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
5 oct. 2010 à 20:57
Salut Jack,
J'utilise les objets range la dessus pas de prob
donc un exemple:
je clique sur la cellule "A1" (pour moi se sont des plages) ==> la valeur de cette plage passe à 1
Je reclique sur cette même plage ==> la valeur passe à 2
et ainsi de suite.
J'ai un code qui tourne mais je dois faire:
clic sur "A1" ==> la valeur passe à 1
pour que la valeur de "A1" passe à 2 je dois d'abord faire un clic sur une autre plage ex: "A2" puis cliquer sur "A1".

c'est normal puisque j'utilise la sub SelectionChange de ma feuille


tout ça car je suis un peu fainiant et j'utilise surtout la souris dans cette feuille

Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
6 oct. 2010 à 00:28
Merci jack,
j'ai contourné le prob je fais un .Offset(0,-1) pour sélectionner une colonne caché largeur = 0

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Static MyTarget
' on vérifie si on a clique dans la plage voulue
If IsCellInRange(Target, "Bouches") = True Then
'
If MyTarget = "" Then
MyTarget = Target.Address
Target.Value = Target.Value + 1
Target.Offset(0, -1).Select
MyTarget = ""

End If
End If


Si quelqun à quelque chose de plus propre je suis preneur
Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2010 à 08:49
Oui, en effet, bonne astuce.
Pourquoi as-tu besoin de MyTarget ?
Si tu veux simplement ne pas traiter l'évènement déclenché par le passage sur ta colonne fantôme, suffit de tester si Target.Visible est True (ou Width = 0)
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
6 oct. 2010 à 20:39
Bé quand je fais le .Offset Excel relance "SelectionChange de la feuille, donc c'est pour éviter de relancer le code de la procédure.
MyTarget est déclarer en Static si je ne fais pas cela je me retrouve avec l'incrémentation dans ma plage caché.

Mais bon si qqn à mieux je suis preneur.

Tant que je suis là je recherche un bon bouquin sur le Visual Basic 2010 de bonne facture et pas pour les débutants.


Cordialement, Jean-Paul
______________________________________________________________________
Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous