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

XL 2013 [VBA] Check contenu d'une cellule dans une autre feuille avec un retour via MsgBox

  • Initiateur de la discussion Initiateur de la discussion Eawyne
  • 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 !

Eawyne

XLDnaute Nouveau
Bonjour !

voici un code que je fais tourner sur un fichier que nous utilisons au travail ; ce qu'il fait est d'aller checker le contenu d'un dossier dès qu'on entre une valeur dans une cellule d'une colonne entière : s'il y a correspondance, une MsgBox nous propose d'ouvrir le fichier idoine.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

 Dim searchFolder As String, fileName As String
 Static PowerPointApp As Object

 searchFolder = "C:\Users\crolles300 oper\STMicroelectronics\C300 Lithography Module - Derogations STARLight"

 If Right(searchFolder, 1) <> "\" Then searchFolder = searchFolder & "\"

 If Target.Column = 2 Then
 If Target.CountLarge > 1 Then Exit Sub
 If Target.Value = "" Then Exit Sub

 fileName = Dir(searchFolder & "*" & Target.Value & "*.ppt*")
 If fileName <> vbNullString Then
 If MsgBox(fileName & " existe. Voulez-vous l'ouvrir ?", vbYesNo + vbQuestion, "Fiche de dérogation") = vbYes Then
 If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject("PowerPoint.Application")
 PowerPointApp.Presentations.Open searchFolder & fileName
 End If
 End If
 End If

 End Sub

Cela a demandé pas mal de travail, d'erreurs, et d'aide : mes connaissances en code/VBA sont fortement limitées. Mais là, mes maigres "skills" ne me suffisent plus ^^' J'aurais besoin de faire un second check à partir de la même valeur rentrée dans la cellule :

=> check le contenu de la cellule dans la Feuille 1 vers une colonne de la Feuille 2
=> s'il y a une correspondance, une MsgBox devrait afficher le contenu de la cellule +1 (offset) de la Feuille 2

Je suppose que je dois jouer avec la variable Target.Value & pour obtenir le bon message dans la Box, mais je n'en suis pas sûr. Idéalement, chaque macro devrait se lancer l'une après l'autre...

Bien des questions, plein de flou =/ J'ai googlé/duckducké un peu partout, mais je ne trouve pas de code qui puisse m'aider directement ; et mes limites ne me permettent pas de "merger" ces bouts de codes avec ce que j'ai déjà.

Je vous remercie d'avance pour toute aide que vous pourriez m'apporter !
🙂
 
Solution
Bonjour,
j'avais mal interprété la demande.
Si on doit chercher la valeur dans feuil2 :
VB:
'    Partie 2 ---------------------------------------------------------------------------------------------------------
    With Application
        Msg = .IfError(.VLookup(Target.Text, Worksheets("Sheet2").Columns("A:B"), 2, 0), "")
        If Msg <> "" Then MsgBox Target.Value & vbLf & vbLf & Msg, vbInformation
    End With
'    Fin Partie 2 -----------------------------------------------------------------------------------------------------
Bonjour,
Le code ci-dessous devrait pouvoir le faire :
renseignez {ligne} et {colonne]
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim searchFolder As String, fileName As String
Static PowerPointApp As Object

If Target.Column = 2 Then
    If Target.CountLarge > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
   ' Partie 1 ---------------------------------------------------------------------------------------------------------
    searchFolder = "C:\Users\crolles300 oper\STMicroelectronics\C300 Lithography Module - Derogations STARLight"
    If Right(searchFolder, 1) <> "\" Then searchFolder = searchFolder & "\"
    fileName = Dir(searchFolder & "*" & Target.Value & "*.ppt*")
    If fileName <> vbNullString Then
       If MsgBox(fileName & " existe. Voulez-vous l'ouvrir ?", vbYesNo + vbQuestion, "Fiche de dérogation") = vbYes Then
           If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject("PowerPoint.Application")
           PowerPointApp.Presentations.Open searchFolder & fileName
       End If
    End If
   ' Partie 2 ---------------------------------------------------------------------------------------------------------
    Dim Refcell As Range
    Set Refcell = WorkSheets("Feuil2").cells({Ligne},{colonne}).value
    If Target.Value = Refcell.Value Then
       MsgBox "le contenu=" & Refcell.Offset(, 1).Value
    End If
        
End If

End Sub
 
Merci pour la réponse !

En revanche, si j'arrive bien à rentrer la bonne valeur pour la Feuille, j'ai du mal à savoir quoi mettre pour les cells. Si je veux qu'il checke la colonne A uniquement, je pensais qu'il fallait mettre ("A, A") ? Quoi qu'il en soit, quoi que je mette, j'ai droit à :

Run-time error "5":
Invalid procedure call or argument

Remplacer par columns (1) n'aide pas non plus.
 
J'ai testé chaque variable pour voir ; à chaque fois j'ai :

Run-time error '424':
Object required

Voici la ligne surlignée en Debug :
Code:
    Set Refcell = Worksheets("Feuil2").Cells(1, 1).Value

J'ai recréé une feuille avec le même nom que dans l'exemple, histoire de.

EDIT : ci-joint un fichier avec le code
 

Pièces jointes

Dernière édition:
Bonjour,
j'avais mal interprété la demande.
Si on doit chercher la valeur dans feuil2 :
VB:
'    Partie 2 ---------------------------------------------------------------------------------------------------------
    With Application
        Msg = .IfError(.VLookup(Target.Text, Worksheets("Sheet2").Columns("A:B"), 2, 0), "")
        If Msg <> "" Then MsgBox Target.Value & vbLf & vbLf & Msg, vbInformation
    End With
'    Fin Partie 2 -----------------------------------------------------------------------------------------------------
 
Wow 😵 je suis navré d'avoir fait perdre du temps en m'expliquant mal 😭

En attendant, ça marche super bien ! Et d'un certain côté, avoir les deux solutions est une bonne idée, même si la seconde couvre tout...

Serait-ce trop demander que d'expliquer ce que cette nouvelle fonction fait exactement ?

Mais sinon, un grand merci !
 
Vlookup ==> RechercheV

Iferror ==> SiErreur
 
- 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
3
Affichages
485
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
481
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…