Commande adresse en VBA

Résolu
djca Messages postés 32 Statut Membre -  
 djca -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  3. djca Messages postés 32 Statut Membre 5
     
    Vraiment un grand merci
    j'avance doucement mais surement et cela grace à votre aide
    0
  4. djca Messages postés 32 Statut Membre 5
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. djca
     
    Un grand merci
    Comme cela le tableau pourra être remplie par un néophyte avec des gardes fous
    0