Deux macros incompatibles...

libellule85

XLDnaute Accro
Bonsoir le forum,

Avant de commencer, je suis nul en vba.

J'ai deux macros qui misent toutes les deux dans le code de ma feuille font bugger excel !

La première macro ci-dessous sert à mettre en majuscule la première lettre d'une cellule (les lettres peuvent être le C ou le F) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s As String
 s = Cells(8, 3).Value
    Cells(8, 3).Value = UCase(Left(s, 1)) & LCase(Right(s, Len(s) - 1))
End Sub
La deuxième macro sert à rechercher dans la colonne b le code à partir de la cellule c8 dont la 1è lettre a été mise en majuscule :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$C$8" Then Exit Sub
 Dim Cel As Range
 Set Cel = Range("b:b").Find(Range("b2") & "*", lookat:=xlWhole)
 If Not Cel Is Nothing Then Cel.Select
 End Sub
Comment faire pour mettre ces deux macros en une seule ?


D'avance merci pour votre aide
 

Pièces jointes

  • libellule85 problème pour réunir deux macros.xlsm
    15.1 KB · Affichages: 26

CPk

XLDnaute Impliqué
Re : Deux macros incompatibles...

Bonjour, la première macro n'est pas utile, la recherche par défaut se fait sans respecter la casse donc ceci semble parfaitement respecter ce que vous voulez faire non ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$C$8" Then Exit Sub
 Dim Cel As Range
 Set Cel = Range("b:b").Find([C8], lookat:=xlWhole)
 If Not Cel Is Nothing Then Cel.Select
 End Sub
 

DoubleZero

XLDnaute Barbatruc
Re : Deux macros incompatibles...

Bonjour, libellule85, CPk, le Forum,

Comme ceci ?

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
    Application.EnableEvents = 0
    If Target.Address <> "$C$8" Then Exit Sub
    Target.Value = UCase(Left(Target, 1)) & LCase(Right(Target, Len(Target) - 1))
    Set Cel = Range("b:b").Find([C8], lookat:=xlWhole)
    If Not Cel Is Nothing Then Cel.Select
    Application.EnableEvents = -1
End Sub

A bientôt :)
 

Si...

XLDnaute Barbatruc
Re : Deux macros incompatibles...

Salut

Attention ÒÓ :D, avec
Code:
  ...
  Application.EnableEvents = 0
  If Target.Address <> "$C$8" Then Exit Sub
  ...
si l'adresse ne convient pas, on neutralise les évènements à venir et même dans les autres classeurs !

Pour éviter ce blocage, je permuterai ces 2 lignes.

Dans mon style, j’écrirai en gardant ton idée*
Code:
Private Sub Worksheet_Change(ByVal R As Range)
    Dim C As Range
    If R.Address <> "$C$8" Then Exit Sub
    Application.EnableEvents = 0
    R = UCase(Left(R, 1)) & Right(R, Len(R) - 1) 'LCase inutile si la fin est numérique
    Set C = [B:B].Find(R, LookAt:=1)
    If Not C Is Nothing Then C.Select
    Application.EnableEvents = 1
End Sub

*je ne sais pas ce qu'il faut rechercher :confused: !
 

CPk

XLDnaute Impliqué
Re : Deux macros incompatibles...

Bonjour, libellule85,00,SI, le Forum.
Votre macro avec Ucase() ajouté ceci dit ctrl+ f fais la même chose sans macro :|
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$C$8" Then Exit Sub
[C8] = UCase([C8])
 Dim Cel As Range
 Set Cel = Range("b:b").Find([C8], lookat:=xlWhole)
 If Not Cel Is Nothing Then Cel.Select
 End Sub
 

Statistiques des forums

Discussions
314 243
Messages
2 107 672
Membres
109 895
dernier inscrit
Jadore