Excel : Utilisation de macros avec cellule active
Fermé
The_PEagle
Messages postés
4
Date d'inscription
samedi 5 mars 2016
Statut
Membre
Dernière intervention
6 mars 2016
-
5 mars 2016 à 16:38
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 6 mars 2016 à 17:13
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 6 mars 2016 à 17:13
A voir également:
- Excel : Utilisation de macros avec cellule active
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
6 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
Modifié par Vaucluse le 5/03/2016 à 17:23
Modifié par Vaucluse le 5/03/2016 à 17:23
Bonjour
je suis peu doué e VBA mais peut être en utilisant les positions relatives, dans le code de la feuille (pas dans un module):
Target.cells.offset (ligne, colonne).value= votre calcul
ligne étant le nombre de ligne depuis a cellule "mére" jusqu'à celle résultat, et idem pour colonne
La qualité de la réponse dépend surtout de la clarté de la question, merci!
je suis peu doué e VBA mais peut être en utilisant les positions relatives, dans le code de la feuille (pas dans un module):
Target.cells.offset (ligne, colonne).value= votre calcul
ligne étant le nombre de ligne depuis a cellule "mére" jusqu'à celle résultat, et idem pour colonne
La qualité de la réponse dépend surtout de la clarté de la question, merci!
The_PEagle
Messages postés
4
Date d'inscription
samedi 5 mars 2016
Statut
Membre
Dernière intervention
6 mars 2016
5 mars 2016 à 17:25
5 mars 2016 à 17:25
Mon problème est que je ne sais pas comment récupérer les "coordonnées" de la cellule sélectionnée, sinon, le offset (ou même le reste ne devrait pas être un problème).
Le problème à le faire dans la feuille, serait la facilité de lecture puisqu'il m'imposerait un tableau (sur cette feuille ou une autre) et qu'il serait difficile de s'y repérer
Le problème à le faire dans la feuille, serait la facilité de lecture puisqu'il m'imposerait un tableau (sur cette feuille ou une autre) et qu'il serait difficile de s'y repérer
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
5 mars 2016 à 17:40
5 mars 2016 à 17:40
Bonjour,
je te conseille le double-clic :
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
plutôt que la simple sélection :
Sub Worksheet_SelectionChange(ByVal Target As Range)
à toi de voir.
L'un comme l'autre te passe le range de la cellule ayant déclenché l'événement, c'est Target.
Après tu peux interroger ses propriétés, par exemple :
Target.value
Target.address
Target.column
Target.row etc
En dehors de ces événements fournissant Target la cellule active est ActiveCell tout simplement, ou bien Selection si tu veux la plage sélectionnée, avec les même propriétés.
eric
je te conseille le double-clic :
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
plutôt que la simple sélection :
Sub Worksheet_SelectionChange(ByVal Target As Range)
à toi de voir.
L'un comme l'autre te passe le range de la cellule ayant déclenché l'événement, c'est Target.
Après tu peux interroger ses propriétés, par exemple :
Target.value
Target.address
Target.column
Target.row etc
En dehors de ces événements fournissant Target la cellule active est ActiveCell tout simplement, ou bien Selection si tu veux la plage sélectionnée, avec les même propriétés.
eric
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 5/03/2016 à 17:50
Modifié par michel_m le 5/03/2016 à 17:50
Bonsoir
A placer dans le module "feuille" de la feuille active
Michel
Option Explicit
'---------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E8:Z26")) Is Nothing Then
Range("B1") = Cells(2, Target.Column) / (Target - Target.Offset(0, 1))
End If
End Sub
A placer dans le module "feuille" de la feuille active
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
The_PEagle
Messages postés
4
Date d'inscription
samedi 5 mars 2016
Statut
Membre
Dernière intervention
6 mars 2016
5 mars 2016 à 19:10
5 mars 2016 à 19:10
Merci à tous, je tenterai ça, j'ai cependant des questions:
dans les variables, je comprends Target, le Range il faut bien le définir (il se peut que je dise des bêtises, merci de me prévenir :) ) par contre, tu mets un cancel Eric, je ne le connais pas, que fait-il?
De même on les mets ByVal, quelle est la différence entre ByVal et ByRef ?
Merci à vous en tout cas
dans les variables, je comprends Target, le Range il faut bien le définir (il se peut que je dise des bêtises, merci de me prévenir :) ) par contre, tu mets un cancel Eric, je ne le connais pas, que fait-il?
De même on les mets ByVal, quelle est la différence entre ByVal et ByRef ?
Merci à vous en tout cas
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 5/03/2016 à 23:52
Modifié par eriiic le 5/03/2016 à 23:52
C'est vba qui met tout ça.
Dans un module feuille choisis Worksheet dans la liste de gauche (en haut du code), la liste de droite te fournit les événements feuille. Si tu cliques dessus vba t'écrit le Sub avec les paramètres qu'il passe
Si tu mets Cancel=True dans le code l'événement est annulé. Pour le double-clic le passage en mode édition de la cellule est annulé.
Dans le module ThisWorbook tu trouveras les événements classeur.
Cours VBA
Dans un module feuille choisis Worksheet dans la liste de gauche (en haut du code), la liste de droite te fournit les événements feuille. Si tu cliques dessus vba t'écrit le Sub avec les paramètres qu'il passe
Si tu mets Cancel=True dans le code l'événement est annulé. Pour le double-clic le passage en mode édition de la cellule est annulé.
Dans le module ThisWorbook tu trouveras les événements classeur.
Cours VBA
The_PEagle
Messages postés
4
Date d'inscription
samedi 5 mars 2016
Statut
Membre
Dernière intervention
6 mars 2016
6 mars 2016 à 17:01
6 mars 2016 à 17:01
oui, j'ai vu que VBA auto remplissait plutôt bien.
C'est juste que j'aime comprendre le fonctionnement et que je me demande quelle sera la différence entre un objet passé en valeur et un objet passé en référence
C'est juste que j'aime comprendre le fonctionnement et que je me demande quelle sera la différence entre un objet passé en valeur et un objet passé en référence
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
6 mars 2016 à 17:13
6 mars 2016 à 17:13
Tiens, j'ai encore perdu du temps par solidarité
The_eagle en black list
The_eagle en black list