Selection [repondu]

Selection [repondu] - VB/VBA/VBS - Programmation

Marsh Posté le 06-07-2006 à 11:36:56    

Hello,
 
Je fais une macro pour les vacances d'un groupe.
Lorsque j'ouvre le fichier excel il cherche la date du jour et l'encadre.
Le problème c'est que je voudrais encadrer qques cellules en dessous de la date...
exemple :
 
J'ai une colonne avec les noms des personne p.ex dans les cellules "A3","A4","A5" . plus loin j'ai ma date qui est p.ex dans la cellule "C2". Je fais une recherche, je tombe sur la cellule "C2" et il me l'encadre.
Maintenant, ce que je voudrais c'est qu'il me prenne la cellule "C2" mais aussi "C3","C4" et "C5".
 
 
Je ne sais pas si c'est explicite mais bon voilà..... Je me disais que je pouvais faire une condition d'ajout de cellule à la case active mais je ne sais pas comment faire ....
 
Qqun pourrait m'aider ???
 
Merci d'avance !


Message édité par treboux le 10-07-2006 à 08:30:36
Reply

Marsh Posté le 06-07-2006 à 11:36:56   

Reply

Marsh Posté le 06-07-2006 à 11:59:23    

ben au lieu d'appliquer ton encadrement sur la cellule recherchée, tu l'appliques à  (cellule recherchée+1),(cellule recherchée+2) et (cellule recherchée+3).... non?

Reply

Marsh Posté le 06-07-2006 à 12:01:13    

Salut,
 
Utilises plutot une mise en forme conditionelle avec en condition de type formule si C2 = date du jour faire un cadre et ceci pour C2, C3 et C4.

Reply

Marsh Posté le 06-07-2006 à 13:58:25    

peut-etre mais c'erst ca que je n'arrive pas !!!!

Reply

Marsh Posté le 06-07-2006 à 14:02:08    

envoi un début de code.

Reply

Marsh Posté le 06-07-2006 à 14:06:18    

Paul Hood a écrit :

envoi un début de code.


 
Voila le code :
 

Citation :


 
'-------------------- Macro s'exécutant lors de l'ouverture du document ---------------
 
Private Sub Workbook_Open()
 
'-------------------- Définition des variables -----------------------------------------
 
Dim mydate As Date
Dim cel
mydate = now
 
'-------------------- Sélection de toutes les cellules pour enlever les bordures   -----
    Cells.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
     
'-------------------- Sélection d'une seule case ---------------------------------------
 
    Range("A1" ).Select
 
     
'-------------------- Recherche de la date du jour pour la mettre en encadré -----------
     
 
    Cells.Find(What:=Date, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
 
'-------------------- Affectation de l'adresse de la cellule à la variable --------------
 
    cel = ActiveCell.Address
 
'------------------- Affichage de l'adresse ----------------------------------------
 
    MsgBox (cel)
     
'------------------- Encadrement de la cellule active ------------------------------
 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
   
 
End Sub
 


 
Voilà tout ce que j'ai pu faire.....

Reply

Marsh Posté le 06-07-2006 à 14:30:30    

tu applique une mise en forme conditionelle à "C2","C3","C4" et "C5".  
et en condition tu mets La formule est : =C2=AUJOURDHUI()

Reply

Marsh Posté le 06-07-2006 à 14:33:33    

sans prétendre pouvoir faire mieux tout de suite, je trouve ton code très lourd... pour peu de choses au final.
Si quelqu'un peut me confirmer l'utilisation de la méthode .Callout.Border
tu fais des boucles sur les value de tes cellules, ca marche aussi bien, et une fois ta cellule trouvée tu lui aplique un .callout.border = true...
Non ?

Reply

Marsh Posté le 06-07-2006 à 14:43:00    

Pour sélectionner 3 cellules sous celle où se trouve la date
 
Range(Cells(cel.row, cel.column), Cells(cel.row + 3, cel.column)).Select
 

Reply

Marsh Posté le 06-07-2006 à 14:50:40    

Paul Hood a écrit :

Pour sélectionner 3 cellules sous celle où se trouve la date
 
Range(Cells(cel.row, cel.column), Cells(cel.row + 3, cel.column)).Select


 
ok mais je mets ce bout de code juste après le find ? ou alors je dois encore définir une variable ???

Reply

Marsh Posté le 06-07-2006 à 14:50:40   

Reply

Marsh Posté le 06-07-2006 à 14:53:59    

juste après ton  
  cel = ActiveCell.Address  

Reply

Marsh Posté le 06-07-2006 à 15:10:17    

Ca me donne :
 
Erreur d'exécution '424'
Objet requis
 
 
?????

Reply

Marsh Posté le 06-07-2006 à 16:47:19    

Avec ca ca doit marcher. J'ai modifié le minimum
 
Private Sub Test()
Dim mydate As Date
Dim cel
Dim MaDate As Date
mydate = Format(Now, "dd/mm/yyyy" )
 
'-------------------- Sélection de toutes les cellules pour enlever les bordures   -----
    Cells.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
     
'-------------------- Sélection d'une seule case ---------------------------------------
 
    Range("A1" ).Select
 
 
'-------------------- Recherche de la date du jour pour la mettre en encadré -----------
Cells.Find(What:=mydate, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Select
 
'-------------------- Affectation de l'adresse de la cellule à la variable --------------
 
    cel = ActiveCell.Address
 
'------------------- Affichage de l'adresse ----------------------------------------
 Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.Row + 3, ActiveCell.Column)).Select
 
    MsgBox (cel)
     
'------------------- Encadrement de la cellule active ------------------------------
 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
     
 
End Sub

Reply

Marsh Posté le 10-07-2006 à 08:30:13    

Merci beaucoup !
 
J'ai juste dû modifier une ou deux ligne et c'est parfait !!
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed