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. Un grand merci
    Comme cela le tableau pourra être remplie par un néophyte avec des gardes fous
    0
    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
      0
      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
        0
        1. Vraiment un grand merci
          j'avance doucement mais surement et cela grace à votre aide
          0
          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
            0
            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
              0