Rapport de message :*
 

Re: Appels Macros avec MsgBoxPerso

Titre du sujet : Re: Appels Macros avec MsgBoxPerso
par myDearFriend! le 04/05/2013 19:37:16

Re,

Le code que tu indiques, je l'ai bien vu dans le fichier joint, oui, mais je n'ai aucun plantage comme tu l'indiques.
J'imagine donc que tu as supprimé la ligne de code qui provoque le message d'erreur indiqué...
STP, la prochaine fois, ça serait quand même bien de nous fournir un fichier qui correspond à ce que tu décris (sinon ça ne sert à rien de nous donner ces détails là, hein ?!).

Pour en revenir à ton objectif, je n'ai pas vraiment compris pourquoi l'utilisation de MsgBoxPerso là. Pour moi, et si je peux me permettre, ça manque un peu de logique : tu lances un traitement depuis une feuille qui te donne déjà la réponse à ta première question "Choisissez votre langue". En effet, si le gars lance la macro depuis la feuille "Français-Anglais", on peut quand même en déduire qu'il cherche à avoir la traduction des mots qu'il y a sur cette feuille (soit les mots en français) et inversement pour l'autre... Qu'en penses-tu ?

Dans la pièce jointe, j'ai laissé la Msgbox de confirmation pour traduction à faire, mais bon... je n'en vois pas l'intérêt non plus à vrai dire. Par ailleurs, et dans ce dernier cas, l'utilisation de MsgBoxPerso me parait un peu too much et même limite inutile (une simple MsgBox suffirait à mon avis).

En pièce jointe donc, mon interprétation de ce que tu sembles vouloir faire...

J'ai utilisé le code suivant :

DANS LES MODULES PRIVATE DES FEUILLES "Français-Anglais" ET "Anglais-Français"

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("a2:a1000")) Is Nothing Then BDD 1
End Sub

Avec "BDD 1" pour l'une et "BDD 2" pour l'autre.


DANS UN MODULE DE CODE STANDARD (ex : Module1) :
Option Explicit

Sub BDD(vLang As Byte)
Dim T As String
Dim vRet As Integer
Dim n As Byte

Const deb As String = "Traducteur Français-Anglais - English and French Translator Part ("
Const fin As String = " / 2)"
   
    n = 1
    If vLang = 1 Then   'Français
        vRet = MsgBoxPerso("Voulez-vous traduire ce mot ? - Would You Translate this Word ?", deb & n & fin, vQuestion, "Oui|Non", "Eras Demi ITC", 11, vNormal, vCenter)
    Else                'Anglais
        vRet = MsgBoxPerso("Would You Translate this Word ? - Voulez-vous traduire ce mot ?", deb & n & fin, vQuestion, "Yes|No", "Eras Demi ITC", 11, vNormal, vCenter)
    End If
   
    If vRet = 1 Then
        Traduction ActiveCell, vLang
    End If
End Sub

Private Sub Traduction(ActR As Range, vLang As Byte)
Dim RechNom As Range
Dim Langue As String
   
    'Dans quel dictionnaire (onglet Fr/En) chercher ?
    Langue = IIf(vLang = 1, "Français", "Anglais")
    'Trouver le mot
    With Sheets(Langue).Columns(1)
        Set RechNom = .Cells.Find(ActR.Value)
    End With
    If RechNom Is Nothing Then Exit Sub
    'Afficher sa traduction
    ActR.Offset(0, 2).Value = RechNom.Offset(0, 1).Value
End Sub
 

En espérant que ça te convienne...

Cordialement,