Commande adresse en VBA

Résolu
Bonjour,
j'écris une macro commande pour remplir un tableau d'astreinte
la macro-commande fonctionne avec coloration de la cellule dès que celle-ci est sélectionnée et après appui sur l’icône « Jour »
je veux améliorer la macro-commande permettant à celle-ci de s'exécuter que si je suis dans la bonne cellule : si je suis en E1 je suis sur une journée et je peux donc colorer
mais si je suis en F1 je suis sur une nuit et je ne veux pas que la macro se déclenche et je voudrai même un message d'erreur –
donc la macro-commande est écrite
ActiveCell.Range("A1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 13395456
End With
ActiveCell.FormulaR1C1 = "J"
With ActiveCell.Characters(Start:=1, Length:=16).Font
.Size = 1
End With
Je n'arrive pas à écrire -- If… (si je suis en E1 ou G1 ou .. déclenchement de la macro mais si je suis si je suis en F1 ou H1 sortie de cette macro)
Un grand merci de votre aide
Configuration: Windows 7

6 réponses

  1. Contributeur
    Bonjour

    If ActiveCell.Address = "$E$1" Or ActiveCell.Address = "$G$1" Then
    '.... ton code
    Else
    MsgBox "perdu"
    exit sub
    End If


    mais il existe des procédures 'macros événementielles qui se déclncheront toutes seules sans appui supplémentaire sur une icône.
    Tu dis si ca t'intéresse
    1. Contributeur
      Re,

      Si tu as une série de cellule valables par ex: E1,G1;I1...

      cette variante t'évitera un code avec toute une série de OR....
      Sub cccc()
      Dim jour As Range
      Set jour = Union(Range("E1"), Range("G1"), Range("I1"))
      If Not Application.Intersect(Range(ActiveCell.Address), jour) Is Nothing Then
          MsgBox "gagné"
      Else
          MsgBox "perdu"
          Exit Sub
      End If
      End Sub
      1. Vraiment un grand merci
        j'avance doucement mais surement et cela grace à votre aide
        1. Bonjour
          Je reviens sur l'écriture de la commande
          mon problème est sur le nombre d'arguments
          comment puis je écrire jour (Série dans colonne Q) jour1 (Série dans la colonne AE) ..
          Dim jour As Range, jour1 As Range
          Set jour = Union(Range("Q4"), Range("Q6"), Range("Q8")..)
          (il n'est pas possible de mettre plus de 30 arguments !)
          Set jour1 = Union(Range("AE4"), Range("AE6"), Range("AE8")..

          là où je rencontre le problème cest que je ne sais pas écrire pour 2 ou plus d'arguments
          If Not Application.Intersect(Range(ActiveCell.Address), jour) Is Nothing
          j'ai essayé mais au pif et là cà blesse
          If Not Application.Intersect(Range(ActiveCell.Address), jour or jour1) Is Nothing
          encore merci de votre aide
          1. Contributeur
            Bonjour,

            Comme quoi il est + qu'utile de bien préciser ce que l'on veut dans dans sa demande...

            si la série commence colonne E (non précisé) et se termine à la fin des colonnes (non précisé) et sur la ligne 1

            With ActiveCell
                'test = .Column
                If .Row = 1 And .Column >= 5 And .Column Mod 2 = 1 Then
                     MsgBox "gagné"
                     '..... le code
                Else
                    MsgBox "perdu"
                    Exit Sub
                End If
            End With
            1. Un grand merci
              Comme cela le tableau pourra être remplie par un néophyte avec des gardes fous