Affecter un numéro de cellule dans une variable

Résolu
robbybasch Messages postés 101 Statut Membre -  
robbybasch Messages postés 101 Statut Membre -
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

  1. lucien
     
    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
    1. robbybasch Messages postés 101 Statut Membre
       
      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
    2. robbybasch Messages postés 101 Statut Membre
       
      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
      1. lucien > robbybasch Messages postés 101 Statut Membre
         
         
        @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
    3. robbybasch Messages postés 101 Statut Membre
       
      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
  2. gilles
     
    Bonjour,

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

    Gilles
    0