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 !

wizard0147

XLDnaute Occasionnel
Bonjour à tous,

j'ai créé une petite macro qui me permet de trouver un produit dans une base de données et de copier/coller les valeurs correspondantes. Voici ce code :

Sub Modification2()

If Not Range("C29") = "" Then
Range("C5").Select
Selection.ClearContents
Sheets("Database").Select
Columns("A:A").Select
Set c = Selection.Find(What:=Sheets("Home").Range("$C$29"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart)
c.Resize(1, 15).Copy

Sheets("Home").Select

With Range("C12")
.PasteSpecial Paste:=xlPasteValues, Transpose:=True
End With

End If

End Sub

Seulement, j'ai un petit problème lorsque je recherche un produit qui n'existe, il m'indique une erreur. Est-il possible de modifier cela en faisant apparaitre une msgbox du genre " Produit introuvable" au lieu de me mettre une erreur ?

Merci d'avance
 
Re : VBA - Erreur

Salut,

A verifier:
Code:
Sub Modification2()
    Dim c As Variant
    
    If Not Range("C29") = "" Then
        Range("C5").ClearContents
        Set c = Sheets("Database").Columns("A:A").Find(What:=Sheets("Home").Range("$C$29"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart)
        If Not c Is Nothing Then
            c.Resize(1, 15).Copy
            Sheets("Home").Range("C12").PasteSpecial Paste:=xlPasteValues, Transpose:=True
        Else
            MsgBox "Produit introuvable", vbOKOnly
        End If
    End If
End Sub

++
Minick
 
Re : VBA - Erreur

Bonjour,
Non testé
Code:
Sub Modification2()
If Range("C29") = "" Then Exit Sub

Range("C5").ClearContents

Set c = Sheets("Database").Columns("A:A").Find(What:=Sheets("Home").Range("$C$29"), After:=ActiveCell, _
        LookIn:=xlFormulas, LookAt:=xlPart)
        
If c Is Nothing Then
MsgBox "non trouvé"
Exit Sub
End If

c.Resize(1, 15).Copy
With Sheets("Home").Range("C12")
    .PasteSpecial Paste:=xlPasteValues, Transpose:=True
End With

End Sub
A+
kjin
 
Re : VBA - Erreur

Un grand merci à vous deux.
Après quelques modifications, je suis arrivé à quelque chose qui fonctionne :

Sub Modification2()

If Range("C29") = "" Then Exit Sub

If Not Range("C29") = "" Then
Range("C5").ClearContents
Sheets("Database").Select
Columns("A:A").Select
Set c = Selection.Find(What:=Sheets("Home").Range("$C$29"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart)

If Not c Is Nothing Then
c.Resize(1, 15).Copy
Sheets("Home").Range("C12").PasteSpecial Paste:=xlPasteValues, Transpose:=True

Else
Sheets("Home").Select
Range("C29").Select
MsgBox "Produit introuvable", vbOKOnly
End If
End If
End Sub

Je sais pas pourquoi mais si je mets directement Columns("A:A") dans la ligne set c = ..., ça plante !

Par contre, est-il possible de ne rechercher que ce qui est écrit en C29 (Equivalent de "Totalité du contenu dans la cellule lors d'une recherche avec CTRL+F) ?

Encore merci
 
- 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
12
Affichages
444
Réponses
15
Affichages
795
Réponses
10
Affichages
792
Réponses
4
Affichages
760
Retour