Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA rechercheV avec Si

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
Bonsoir à tous, je souhaite faire une rechercheV sur une feuille2 en allant chercher les données sur une feuille1. Sur ma feuille 2 je souhaite que la recherche se fasse de la ligne B21 à la dernière ligne vide, dès qu'il y a du texte je m'arrête. En plus si la recherche renvoie NA avoir un message "code non trouvé".
Je l'ai fait avec l'enregistreur de macro, mais c'est pas top.

Merci de votre aide.
 
Re : VBA rechercheV avec Si

Que cherches-tu avec ta rechercheV ? Tu cherches quoi dans quelle plage ?
Ca doit forcément être une macro ?

Bonsoir Diyann, merci de me répondre

En faite je n'ai pas de macro et c'est ce que je faire. Voici ma formule Excel que je veux convertir en code VBA:

=SI(ESTNA(RECHERCHEV(Devis!B21;Fournisseurs!$A$2:$B$50000;1;FAUX));"";RECHERCHEV(B21;Fournisseurs!$A$2:$B$50000;2;FAUX))

Si tu peux m'aider, d'avance merci.
@ bientôt
 
Re : VBA rechercheV avec Si

Bonsoir Arpette Diyann, bonsoir le forum,

En pièce jointe un exemple avec la macro événementielle Change ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
 
'si la modification a lieu ailleurs qu'en B21, sort de la procédure
If Target.Address <> "$B$21" Then Exit Sub
'si B21 est effacée, C21 est effacée également, sort de la procédure
If Target.Value = "" Then Target.Offset(0, 1).Value = "": Exit Sub
 
With Sheets("Fournisseurs") 'prend en compte l'onglet "Fournisseurs"
    Set pl = .Range("A2:A" & .Range("A65536").End(xlUp).Row) 'définit la plage de recherche
End With 'fin de la prise en compte de l'onglet "Fournisseurs"
 
Set r = pl.Find(Target.Value, , xlValues, xlWhole) 'définit la recherche
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence de B21 dans la plage pl
    'place le résultat en C21 (tu adapteras à ton cas en modifiant les valeurs des offset (Ligne, Colonnes))
    Target.Offset(0, 1).Value = r.Offset(0, 1).Value
Else 'sinon
    MsgBox "Code non trouvé !" 'message
    Range("B21").Select 'place le curseur dans la cellule B21
End If
End Sub
 

Pièces jointes

Re : VBA rechercheV avec Si

Bonjour Robert et merci çà fonctionne bien, le problème c'est que je veux faire cette recherche pas uniquement sur B21, mais B22, B23, B24....
Merci de votre aide.
 
Re : VBA rechercheV avec Si

Bonsoir Pierrot, Robert, le forum, c'est nickel merci beaucoup.

@ bientôt
Bonjour le forum, dans la continuité de mon application, je souhaite insérer par double click quand j'arrive à la fin de ma feuille qui va de la ligne 21 à 45. J'ai placé ceci dans la même feuille que ma recherchev et çà bug.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False

If Not Application.Intersect(Target, Range("B1:B65000")) Is Nothing Then
Rows(Target.Row).Insert Shift:=xlDown
Cancel = True
End If

Application.ScreenUpdating = True
End Sub

Merci de votre aide.
 
Re : VBA rechercheV avec Si

Bonjour à tous,

Euh.... pas tout compris moi.... Ca bogue sur quelle ligne ? mets peut être un fichier en pièce jointe, plus facile pour t'aider....

bon après midi
@+
Bonjour Pierrot et le forum, ci-joint mon fichier
Merci de ton aide
 

Pièces jointes

Re : VBA rechercheV avec Si

Re,

modifie la procédure ainsi :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("B1:B65000")) Is Nothing Then
        Application.EnableEvents = False
        Rows(Target.Row).Insert Shift:=xlDown
        Cancel = True
        Application.EnableEvents = True
    End If
End Sub
 
Re : VBA rechercheV avec Si

Merci Pierrot, c'est super, j'ai juste oublié deux choses je veux insérer 25 lignes (c'est pour que la mise en page soit impeccable), et la seconde, une fois que j'ai fait ma recherche, je souhaiterais saisir la quantité en F et que cela multiplie cette valeur par la celle de H et me met le total en J.
Merci pour ton aide et encore bravo.
 
Re : VBA rechercheV avec Si

Bonjour,

pour insérer 25 lignes, essaye ainsi :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("B1:B65000")) Is Nothing Then
        Application.EnableEvents = False
        Rows(Target.Row & ":" & Target.Row + 24).Insert Shift:=xlDown
        Cancel = True
        Application.EnableEvents = True
    End If
End Sub

pour le reste, je pense qu'il faut modifier la procédure que t'avait donné Robert, pense pas qu'il faille utiliser l'événement "BeforeDoubleClick" pour cela...

bonne journée
@+
 
Re : VBA rechercheV avec Si

Bonjour Pierrot et le forum, ça fonctionne, mais pourquoi tu penses qu'il ne faille utiliser l'événement "BeforeDoubleClick" et que suggères tu
Merci de ton aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
330
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…