Action en fonction de l'emplacement dans la feuille

Résolu

Bonjour,

Dans une feuille je veux lors d'un événement "changement de sélection" colorier la cellule activée et mette son contenu dans une autre cellule (A1) et seulement si la cellule est comprise dans la plage MaPlage1 (A4:C36) et effectuer un autre traitement si elle est dans la plage MaPlage2 (E4:G36)

En algorithme on pourrait écrire :

Si la cellule sélectionnée est dans la plage MaPlage1

       Faire : colorier la cellule sélectionnée et écrire son contenu dans A1

Si la cellule sélectionnée est dans la plage MaPlage2

       Faire "autre traitement"

Facile à écrire mais en VBA je n'y arrive pas ; j'arrive sans problème à effectuer des actions lors des changements dans ma feuille mais pas ceux-là !!!!

Merci d'avance

0
Windows / Firefox 107.0

3 réponses

  1. Contributeur

    bonjour,

    Sur quoi butes-tu? Qu'as-tu essayé? Un exemple:

    Private Sub Worksheet_SelectionChange(ByVal CelSel As Range) 
    If not Application.Intersect(CelSel, Range("MaPlage1")) Is Nothing Then
        ' ...
    elseif not Application.Intersect(CelSel, Range("MaPlage2")) Is Nothing Then
        ' ...
    end if
    End Sub
    0
    1. Merci j'ai réglé mon problème : je découvre VBA et je ne connaissais pas la méthode Intersect,

      C'est grâce à l'aide de personnes comme toi sur les forums que progresse doucement

      Merci

      0
      1. J'ai maintenant un autre problème : lorsque je click dans la zone tout se passe bien, les couleurs changent les traitements complémentaires fonctionnent, mais si par erreur au lieu de sélectionner une cellule j'en sélectionne plusieurs j'aimerais faire un traitement d'erreur en créant une boîte de dialogue : pour l'instant mon programme attend une seule valeur et part en débogage si je sélectionne plusieurs cellules

        0
        1. Contributeur

          par exemple 

          Private Sub Worksheet_SelectionChange(ByVal CelSel As Range) 
          if CelSel.count = 1 then
              If not Application.Intersect(CelSel, Range("MaPlage1")) Is Nothing Then
                  ' ...
              elseif not Application.Intersect(CelSel, Range("MaPlage2")) Is Nothing Then
                  ' ...
              end if
          end if
          End Sub
          0