Affecter un numéro de cellule dans une variable

Résolu/Fermé
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022 - 15 juil. 2017 à 19:14
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022 - 16 juil. 2017 à 10:23
Bonjour,
Pour faire evoluer ma macro qui génère l'écriture de commentaires, j'aurai besoin de connaitre comment affecter un numéro de cellule dans une variable.
En effet cela donnerait ceci :
Si le curseur est sur la cellule C3, je clique sur le bouton qui envoie ma macro : qui va me donner ceci :
Si "curseur sur la cellule C3" then 'planning service ménage
lili=8
si "curseur sur la cellule C376" then 'planning service entretien extérieur
lili=365
end if
end if
Cela me permet de faire démarrer mes boucles à un endroit précis de ma feuille. Comme j'ai 5 services, cela m'évite de faire 5 macros.
Merci par avance
CDL
Robby


2 réponses

Bonjour Robby,

Je te propose ce code VBA :


Option Explicit

Sub Essai()
  Dim lili As Long
  Select Case ActiveCell.Address
    ' planning service ménage
    Case Is = "$C$3": lili = 8
    ' planning service entretien extérieur
    Case Is = "$C$376": lili = 365
  End Select
End Sub


Cordialement.
 
0
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022
15 juil. 2017 à 21:25
Génial..
Merci Lucien
J'ai cherché dans différents sujets qui se rapportaient à ce que je voulais faire, mais jamais trouvé. Ton code est simple et cela fonctionne.
Grand merci à Toi
CDL
Robby
0
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022
15 juil. 2017 à 22:51
RE BONSOIR LUCIEN
Cela fonctionne tout à fait comme je voulais. Juste un petit soucis de gestion du clic.
Comme puis je gérer, le fait que la cellule sélectionnée ne soit pas la bonne.
Par exemple, si la personne par mégarde ne clic pas sur la cellule $c$3 ou $c$376 la macro plante. Il faudrait une gestion que si le clic n'est pas au bon endroit un message apparaisse 'blabla" et retourne au debut par un ok.
merci par avance
Robby
0
lucien > robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022
Modifié le 16 juil. 2017 à 04:16
 
@Robby

Vu que le code est exécuté suite au clic sur un bouton, je ne pense pas que
ce soit approprié de « retourner au début » : l'utilisateur clique sur le bouton,
puis : a) la cellule active n'était pas bonne => affiche un message d'erreur
et s'arrête ; b) sinon, ça fait le traitement nécessaire.

Pour le cas a) : ça s'est donc arrêté, et aucun traitement n'a été fait ;
ensuite, à l'utilisateur de se placer sur une bonne cellule (selon le
service), puis de cliquer de nouveau sur le bouton Planning ;
c'est cela qui équivaut à ton « retour au début ».  ;)

==========================

Fichier Excel 2007 : https://mon-partage.fr/f/iMcPbLYO/

À l'ouverture du classeur Excel, la cellule active est C3 ;
clic sur le bouton Planning => ça affiche la valeur de lili : 8

----------------------------------------------

Sélectionne C5 ; clic sur le même bouton => message :
"Vous n'êtes pas sur la bonne cellule." ; clic sur OK =>
ensuite, ça affiche la valeur de lili : 0

En effet, si la cellule active n'est aucune des 5 bonnes cellules
(celles requises pour les 5 services), lili garde sa valeur initiale
de 0 (définie implicitement par : Dim lili As Long).

==========================

À toi d'ajouter le code VBA pour la suite, juste après
End Select et avant End Sub ; exemple :


Option Explicit

Private Sub Planning_Click()
  Dim lili As Long
  Select Case ActiveCell.Address     ' planning du service
    Case Is = "$C$3": lili = 8       ' 1 : ménage
    Case Is = "$C$376": lili = 365   ' 2 : entretien extérieur
    Case Is = "$C$386": lili = 380   ' 3 : buanderie
    Case Is = "$C$396": lili = 390   ' 4 : garage
    Case Is = "$C$406": lili = 400   ' 5 : espaces verts
    Case Else:
      MsgBox "Vous n'êtes pas placé sur la bonne cellule.", 48, "Planning"
  End Select
  MsgBox "lili = " & lili, 64, "Planning"   ' ligne juste pour démo, à enlever
  If lili = 0 Then Exit Sub   ' sortie si lili = 0 (car pas de service adéquat)
  '
  ' Placer ici la suite du traitement à effectuer,
  ' qui utilisera lili (à sa bonne valeur : > 0).
  ' 
  ' 
  ' 
  '
End Sub


⚠  Les services 3 à 5 sont inventés ; à toi de mettre les bonnes
    adresses de cellules et les valeurs de lili correspondantes.

⚠  Remarque bien le test sur la valeur 0 de lili.
 
0
robbybasch Messages postés 100 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 19 août 2022
16 juil. 2017 à 10:23
Bonjour Lucien.
je viens de transcrire ce dont tu as écrit. Avec quelques modifs qui vont avec la macro, c'est................................. PARFAITEMENT PARFAIT. Milles mercis.
J'avance petit à petit dans ma réalisation...
CDL
Robby
0
Bonjour,

Je pense que tu pourrais utiliser Selection_Change de la feuille de calcul

Gilles
0