Aide - Recherche - Membres - Calendrier
Version complète : Macro conditionnel en fonction de la première lettre
Trucs et astuces Express > Discussions Informatique > Microsoft Office 2003 / 2007 > Excel
wildpegase
Bonjour à tous,

Je cherche à faire une macro conditionnelle qui en fonction du premier caractère d'une cellule fasse telle ou telle chose.

Pratiquement cela donne :

Si "le premier caractère de la cellule sélectionnée est * alors mettre la cellule en bleue, sinon descendre d'une ligne.

Pour l'instant j'ai ça:



Sub Couleur_et_couper_coller()
'
' Couleur_et_couper_coller Macro
' Macro enregistrée le 01/06/2007 par Laurent
'


While ActiveCell.Offset(1, 0).Value <> ""


If ActiveCell.Offset(1, 0).Value = ( le 1er caractère est * ) <=== Evidemment là ce n'est pas du VBA

Then

ActiveCell.Range("A1:B1").Select
Selection.Font.ColorIndex = 0
Selection.Interior.ColorIndex = 37
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -1).Range("A1").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(1, -1).Range("A1").Select

Else

ActiveCell.Offset(1, 0).Select


Wend

End Sub


Voici le détail de ma macro.

Quelqu'un pourrait-il m'aider à compléter la partie avec la fonction conditionnelle ??


Merci pour vos réponses.


Laurent
michel_m
Bonjour,

Réponse tardive mais je viens de découvrir ce forum.

Comme tu indiques la colonne B dns un autre fil , je me suis basé là-dessus.

la macro ci dessous est à copier dans le module "feuilX" concerné du VBE (accès par Alt+F11 et ctrl+R si tu ne vois l'explorateur de projets)
La procédure se déclenchera lorsque tu cliqueras sur B1 (faute de mieux, car tu ne précises pas quel est le déclencheur)
CODE
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim derlig As Long, cellule As Range

If Intersect(Target, Range("B1")) Is Nothing Then: Exit Sub

Columns(2).Interior.ColorIndex = 0
derlig = Range("B65536").End(xlUp).Row
For Each cellule In Range(Cells(1, 2), Cells(derlig, 2))
    If Left(cellule, 1) = "*" Then
        cellule.Interior.ColorIndex = 37
    End If
Next
End Sub
wildpegase
Michel,

Merci pour ta macro.

Je suis en train de l'étudier.

Elle fonctionne bien.

Je cherche désormais à étendre la couleur bleue de la cellule qui comprend une étoile avec celle qui est à sa droite.

Cordialement Laurent


P.S: désolé de n'avoir pas consulté le forum, mais les fin d'année en compta son bien chargées.
Helger
Hello.

Alors Wild toujours dans les macros ? biggrin.gif

Sinon, utilise Right à la façon Left citée plus haut.

icon_wink.gif
michel_m
Bonjour à tous les 2

CODE
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim derlig As Long, cellule As Range

If Intersect(Target, Range("B1")) Is Nothing Then: Exit Sub

derlig = Range("B65536").End(xlUp).Row
Range("B1:C" & derlig).Interior.ColorIndex = 0
For Each cellule In Range(Cells(1, 2), Cells(derlig, 2))
    If Left(cellule, 1) = "*" Then
        Union(Cells(cellule.Row, 2), Cells(cellule.Row, 3)).Interior.ColorIndex = 37
    End If
Next
End Sub
mai_chinese.gif
wildpegase
Michel,

Merci pour cette 2ème mouture. mai_chinese.gif

Je l'utilise désormais, elle est bien pratique.


Cordialement.


Laurent.


P.S: un bonjour à Helger qui m'a très souvent aidé dans interrogations sur Excel et le VBA. icon_wink.gif
Ceci une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.