VBA MsgBox

Bonjour,

Je ne suis pas familier avec la VBA et je me retrouve bloqué sur un affichage de nom sur une MsgBox.

Le fichier excel comprend une carte "interactive" de France où lorsque l'on clique un département, celui se colore et indique le secteur dans lequel il se trouve.

Je voudrais ajouter un message sous forme de box qui s'affiche pour dire quel conseiller est rattaché au département. Cependant après quelques essais, le message s'arrêt après "Le conseiller de (nom du département) est ..."

Je n'arrive pas à faire reconnaitre que pour le département de l'Ain il faut qu'il s'affiche "Le conseiller de (nom du département) est xx"

Si je clique sur Aisne : Le conseiller de (nom du département) est yy

etc...

Deuxième solution, j'avais pensé à un nouveau bouton qui serait relié au bouton des département (comme le bouton des secteurs est relié au département), ainsi le nom du conseiller apparaîtrait dans un menu déroulant, est-ce possible ?

Voici la VBA (et le fichier excel en copie) pour mon problème de MsgBox

Private Sub Cbx_Dpt_Change()

Dim CSL As String

If Cbx_Dpt = "Ain" Then

CSL = "xx"

ElseIf Cbx_Dpt = "Aisne" Then

CSL = "yy"

End If

MsgBox "Le conseiller de : " & Cbx_Dpt & " est " & CSL

End Sub

Private Sub Cbx_Dpt_Click()

Evt_Dpt_Sel (Cbx_Dpt.ListIndex + 1)

End Sub

Private Sub Cbx_Rgn_Click()

For Each Row In Sheets("Départements").Range("Table_Départements").Rows

If Int(Row.Cells(1, 4).Value) = Cbx_Rgn.ListIndex + 1 Then

Evt_Dpt_Sel (Int(Row.Cells(1, 2).Value))

Exit For

End If

Next Row

End Sub

Je vous remercie pour votre aide et n'hésitez pas si vous avez besoin d'information complémentaire.

Bien cordialement,

Charles

Bonjour,

Private Sub Cbx_Dpt_Change()
    Dim CSL As String

    If Cbx_Dpt = "Ain" Then
        CSL = "xx"
    ElseIf Cbx_Dpt = "Aisne" Then
        CSL = "yy"
    End If
 Dim nomconseiller As String
 nomconseiller = Worksheets("Départements").Cells(Cbx_Dpt.ListIndex + 3, 6).Value
    MsgBox "Le conseiller de : " & Cbx_Dpt & " est " & nomconseiller

End Sub

Bonjour,

Mettre chaque correspondance Département - Conseiller en dur dans le code est d'une part très long et indigeste, et d'autre part peu intéressant car difficile à faire évoluer dans le temps (si changement de conseiller, etc...). Si vous souhaitez tout de même garder cette structure, préférez Select Case...Case...End Select à If...Then...ElseIf...End If.

Je vous propose donc de faire une simple RECHERCHEV qui va chercher pour chaque département, le conseiller associé dans le tableau de la feuille "Départements". Le code :

Private Sub Cbx_Dpt_Change()

    Dim CSL As String

    CSL = Application.VLookup(Mid(Cbx_Dpt, InStr(Cbx_Dpt, "-") + 2, 100), Sheets("Départements").Range("C3:F97"), 4, 0)
    MsgBox "Le conseiller de : " & Cbx_Dpt & " est " & CSL

End Sub

Une autre façon :

Private Sub Cbx_Dpt_Change()

Dim Dep() As String, Trouve As String
Dim LaFeuille As Worksheet
Dim Plage As Range
Dim Intitule As Object
Dim Ligne As Integer, cpt As Integer

Set LaFeuille = ThisWorkbook.Worksheets("Départements")
Set Plage = LaFeuille.Range("C3:C" & LaFeuille.Range("C" & Rows.Count).End(xlUp).Row)

Dep = Split(Me.Cbx_Dpt, " - ")
If UBound(Dep) <> 1 Then MsgBox "Le format du département n'est pas correcte.", vbCritical, "Erreur"
Trouve = Dep(1)

For Each Intitule In Plage
    If UCase(Intitule) = UCase(Trouve) Then Ligne = Intitule.Row: cpt = cpt + 1
Next Intitule

If cpt = 0 Then MsgBox "Le département n'a pas été trouvé dans la liste.", vbCritical, "Erreur": Exit Sub
If cpt > 1 Then MsgBox "Plusieurs départements portant le même nom existent.", vbCritical, "Erreur": Exit Sub
If LaFeuille.Cells(Ligne, 6) = "" Then MsgBox "Aucuns conseillers n'a été définit pour le département " & Trouve, vbExclamation, "Le conseiller": Exit Sub
MsgBox "Le conseiller pour le département " & Trouve & " est " & LaFeuille.Cells(Ligne, 6), vbInformation, "Le conseiller"

End Sub

EDIT 11:01 : j'ai rajouté une ligne de test si le département existe mais qu'il n'y a pas de conseillers

Bonjour,

Merci infiniment pour vos réponses (rapides et fonctionnelles). Vous m'avez été d'une grande aide.

Après réflexion et un test rapide, la VBA recherche V sera en effet plus simple à mettre à jour dans le temps, juste le tableau excel à mettre à jour.

Je vous souhaite une très bonne journée.

Bien cordialement,

Bonjour,

Merci infiniment pour vos réponses (rapides et fonctionnelles). Vous m'avez été d'une grande aide.

Après réflexion et un test rapide, la VBA recherche V sera en effet plus simple à mettre à jour dans le temps, juste le tableau excel à mettre à jour.

Je vous souhaite une très bonne journée.

Bien cordialement,

il n'y a pas de mise à jour non plus sur celle-ci puisqu'elle utilise uniquement le Numéro trouvé par ta

combobox département

 Dim nomconseiller As String
 nomconseiller = Worksheets("Départements").Cells(Cbx_Dpt.ListIndex + 3, 6).Value
    MsgBox "Le conseiller de : " & Cbx_Dpt & " est " & nomconseiller

En effet, cela fonctionne parfaitement =)

Merci beaucoup, je garde en stock toutes vos explications

Je pense (sans vraiment d’hésitation) que toutes les méthodes sont opérationnel, à toi de choisir celle que tu comprend le mieux et qui correspond le plus à ton besoin

Rechercher des sujets similaires à "vba msgbox"