Fonction cherche VBA

Bonjour,

Je veux utiliser la fonction chercher dans VBA. J'arrive lorsque je précise une cellule, mais pas avec la cellule active. Voici mon code :

If Not Application.Intersect(Target, Range("project_validation")) Is Nothing Then

Dim countnumber As Integer

countnumber = Application.Search("-", ActiveCell)

MsgBox countnumber

End If

End Sub

Si j'écris par exemple Application.Search("-", [A1]) la fonction fonctionne.

Une idée ?

Merci d'avance et bonne journée !

Bonjour,

la propriété par défaut doit être .value, essaie avec ActiveCell.range

eric

PS: je viens de tester chez moi, ça fonctionne avec ActiveCell tout court (?)

Au début je lis

If Not Application.Intersect(Target, Range("project_validation")) Is Nothing Then

Tu es dans quel évènement et pourquoi tu ne te sers pas de Target ?

Bonjour,

Merci pour ta réponse. J'ai le message suivant : Argument Not Optional

Merci encore

J'ai édité mon post, tu ne l'as sans doute pas vu.

A mon avis il faudrait plutôt que tu expliques ce que tu cherches à faire, et que tu fournisses un classeur de travail.

eric

Je viens de voir ton PS,

En fait j'ai une plage de cellule que j'ai nommé "project_validation". J'ai placé ce code dans la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)

Je veux valider si lorsqu'on modifie une des cellules dans le groupe.


J'ai trouvé...

Quand je fesais mon enter ma cellule active changeais. J'ai faitc ountnumber = Application.Search("-", ActiveCell.Offset(-1, 0))

Pour aller prendre la cellule du haut !

Merci pour ton support.

Bonne soirée !

C'est ce que je pressentais, la cellule modifiée c'est Target que tu reçois en paramètre.

Et si c'est pour contrôler le format de saisie pourquoi n'utilises-tu pas la Validation qui est prévue pour ?

eric

En fait, je veux transformer le résultat de l'utilisateur.

Dans le menu déroulant j'ai par exemble :

555555-Description du projet

Je veux que dans mon déroulant l'utilisateur voit : 555555-Description du projet, mais lorsqu'il sélectionne, la valeur de la cellule soit seulement 555555.

Voici mon code.

If Not Application.Intersect(Target, Range("project_validation")) Is Nothing Then

Dim countnumber As Integer

Dim test As String

countnumber = Application.Search("-", ActiveCell.Offset(-1, 0))

ActiveCell.Offset(-1, 0).Value = Left(ActiveCell.Offset(-1, 0), countnumber - 1)

End If

Le seul petit problème qui me reste c'est que je dois resélectionner ma cellule pour activer ma macro.

En plus court tu pourrais mettre :

If Not Application.Intersect(Target, Range("project_validation")) Is Nothing Then
    Target = Split(Target, "-")(0)
End If

eric

edit

Après test :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Application.Intersect(Target, Range("project_validation")) Is Nothing Then
        Application.EnableEvents = False
        Target = Split(Target, "-")(0)
        Application.EnableEvents = True
    End If
End Sub

Ca passe

Rechercher des sujets similaires à "fonction cherche vba"