Appels Macros avec MsgBoxPerso
#1
Aspirant XLPages

Inscription: 23/03/2012

Messages: 22

Système d'exploitation:
PC
Version Excel utilisée:
2010 - 32bits
Posté le : 04-05-2013 11h12
Bonjour Didier, le Forum


Suite au tuto sur la MsgBoxPerso, je suis entrain de réalisé un fichier de traduction de mots de Français en Anglais et vice-versa. J'essaie d'appeler les deux macros (Trad_F_A - Trad_A_F) et j'ai un message d'erreur Objet Requis. Tu voudrais bien jeter un coup d'oeil et les adapter s'il te plaît?

Merci infiniment


A bientôt
Pièce jointe:
zip Classeur1.zip   [ Taille: 41.65 Ko - Téléchargements: 528 ]

Jacky - coupdepouce.mabulle.com
Hors Ligne
Rapport   Haut 

Re: Appels Macros avec MsgBoxPerso
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 04-05-2013 11h46
Bonjour Jacky, le Forum,

Dans quel contexte obtiens-tu ce message d'erreur ?
Détaille nous exactement ce que tu fais comme manipulations pour qu'on puisse reproduire cette situation d'erreur...

Quelle version Excel 2010 utilises-tu ? (32 ou 64bits)

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Appels Macros avec MsgBoxPerso
#3
Aspirant XLPages

Inscription: 23/03/2012

Messages: 22

Système d'exploitation:
PC
Version Excel utilisée:
2010 - 32bits
Posté le : 04-05-2013 15h29
Re Didier,

désolé du retard, j'ai dû m'absenter.


J'utilise Office 2010 32bits. En ce qui concerne l'erreur, c'est en insérant ces lignes:

If vRet = 1 Then
    n = n + 1
    vRet = MsgBoxPerso("Voulez-vous traduire ce mot ?
C'est à partir d'ici, que je souhaite pouvoir sélectionner un mot et que la macro excécute la traduction.

If vbOK = True then Call Trad_F_A   oubien   If Vret <> "" Then Call Trad_F_A

If vRet = 2 Then
    n = n + 1

Reste du code...


En souhaitant que ce soit plus compréhensible.



A+



Jacky - coupdepouce.mabulle.com
Hors Ligne
Rapport   Haut 

Re: Appels Macros avec MsgBoxPerso
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 04-05-2013 19h37

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,




Pièce jointe:
zip PourJacky.zip   [ Taille: 38.69 Ko - Téléchargements: 521 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Appels Macros avec MsgBoxPerso
#5
Aspirant XLPages

Inscription: 23/03/2012

Messages: 22

Système d'exploitation:
PC
Version Excel utilisée:
2010 - 32bits
Posté le : 04-05-2013 20h32
Re Didier,

bien sûr que tu as raison. Mais moi aussi je trouvais trop simpliste et sans vie, le faite de cliquer sur le mot et le faire apparaître dans une cellule ou mettre une MsgBox standard.

Et si VBA existe c'est bien le faite aussi de créer quelque chose de différent. Par exemple, j'ai vu un jour que tu avais créé une fonction pour inserer '  : ' dans une textbox pour avoir le format heure. Pourquoi compliquer les choses quand on peux faire simple.

TextBox1.Value = Replace(TextBox1.Value, ".", ":") . Je ne sais pas si tu vois ce que je veux dire


dans tous les cas, super travail sur le fichier. Merci mille fois.


Amicalement Jacky - loup solitaire.




Jacky - coupdepouce.mabulle.com
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes