Commande adresse en VBA

Résolu/Fermé
djca Messages postés 26 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 15 juin 2014 - 16 janv. 2010 à 10:46
 djca - 17 janv. 2010 à 21:25
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
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 janv. 2010 à 11:11
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 janv. 2010 à 11:38
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
djca Messages postés 26 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 15 juin 2014 5
16 janv. 2010 à 13:32
Vraiment un grand merci
j'avance doucement mais surement et cela grace à votre aide
0
djca Messages postés 26 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 15 juin 2014 5
16 janv. 2010 à 17:51
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
17 janv. 2010 à 09:53
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
Un grand merci
Comme cela le tableau pourra être remplie par un néophyte avec des gardes fous
0