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,
|