[VBA] a l'aide ,pitié, please , ayuda

Fermé
clben23 Messages postés 22 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 9 mars 2008 - 27 juin 2007 à 16:13
 Utilisateur anonyme - 29 juin 2007 à 15:10
bonjour,

bon voila la situation:

j'ai créé une macro excel qui ouvre une feuille word et lance une macro appartenant à cette meme feuille word.cette derniere lance un formulaire qui lance des MsgBox en fonction d'un parametre (si on acocher des CheckBox ou non) toujours sur la feuille word recement ouverte.

Mes deux problemes:
1° je voudrais savoir si on peut selectionner une ligne de texte ou meme un objet dans une MsgBox depuis word (pitié dite oui et comment!!!!!)?
2° je voudrais importer les valeurs renseigné par la MsgBox vers Excel (plus précisment le classeur qui a ouvert la feuille word)et les stocker dans une feuille nommé "variables" .
tout les noms peuvent etre changé a tout moment, seul "variables" est invariant (lol...).

Voila si vous faites ca je vous sacre chevalier de merci mon dieu ca fait 5 jours que je tourne en rond et que je pense toucher au but!!!!!!!!



merci encore
Clben23

7 réponses

Utilisateur anonyme
27 juin 2007 à 19:05
Bonjour,

La fonction [ InputBox ] permet de récupérer des valeurs.

Lupin
0
clben23 Messages postés 22 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 9 mars 2008
28 juin 2007 à 08:12
salut,
ok alors voila ce que ca donne avec le input box:

If case_coche = True Then
pos = InputBox(prompt:="choisir le lieu ou se positionnera le tableau " & tableaux, Title:="position du tableau " & tableaux)
End If


et comment je fais ensuite pour envoyer les resultats vers une feuille excel deja ouverte tout en sachant que le input box a été rédigé sous word?

merci
0
Utilisateur anonyme
28 juin 2007 à 14:26
Bonjour,

exemple :

soit une macro sous Word :

Function Capture() As String

    Capture = InputBox("Saisie", "Essai de transfert", "Blanc")

End Function



et une macro sous Excel qui lance la macro sous Word pour en récupérer la valeur :

Sub ChercheReponse()

    Dim objWord As Variant, objAppW As Variant
    Dim Fichier As String, Reponse As String
    
    Fichier = "C:\Documents\Word\Transfert.doc"
    Set objAppW = CreateObject("Word.Application")
    Set objWord = objAppW.Documents.Open(Fichier)
    objAppW.Visible = True
    Reponse = objAppW.Application.Run(MacroName:="Capture")
    MsgBox Reponse
    
End Sub
'


Lupin
0
clben23 Messages postés 22 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 9 mars 2008
28 juin 2007 à 15:56
ca marche super bien!!!!

deux petit hic:

1) il faudrais que la feuille excel soit activer automatiquement apres que l'on ait selectionner dans la feuille word (donc apres la message box)

2) on ne peut que ecrire dans la inputbox , on ne peut pas selectionner une chaine de caractère (voir merveille des merveilles un objet excel!!)

si tu pouvais m'aider pour ca aussi , ca serait enorme.

dans le cas contraire je te remercie vivement car tu as déja fait beaucoup


Merci clben23
0
clben23 Messages postés 22 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 9 mars 2008
28 juin 2007 à 15:39
merci je vais essayer ca ca l'air pas mal du tout
je tient au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
28 juin 2007 à 16:20
re :

en fait, je crois qu'il y a moyen de paramétrer le [ InputBox ] pour faire ce que tu veux,
toutefois je ne l'ai jamais fait sous Word, j'ai utiliser cette option une fois sous Excel afin
de faire sélectionné à l'utilisateur une plage de cellule.

je vais fouiller dans mes archives car ma mémoire n'est pas très bonne et je te reviens la-dessus !

@+

Lupin
0
Utilisateur anonyme
29 juin 2007 à 13:41
Bonjour,

Alors après quelques recherches, j'ai bien retrouvé la function [ InputBox ] avec l'argument
permettant de saisir autre chose que du texte, en l'occurence ici une plage de cellules :

Sub SaisiePlage()

    Dim Plage As Range, Cellule As Range
    
    Set Plage = Application.InputBox("Saisie", Type:=8)
    
    For Each Cellule In Plage
        MsgBox Cellule.Value
    Next Cellule
    
End Sub
'


Pour que Excel redevienne au premier plan, il est possible d'ajouter l'instruction :

objAppW.Visible = False


Lupin
0
clben23 Messages postés 22 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 9 mars 2008
29 juin 2007 à 14:30
salut merci pour ces information, seulement (eh oui!) il ya un hic (re):

la macro de selection ets sous word donc le type de la selection ne peut pas être range.

enfin bref j'ai essaye et a marche pô.

sinon j'avis pensé a un truc du genre


Function Capture As String
MsgBox " selectionner la portion de texte qui sera remplacée"
capture=selection
run attente
end function


et une autre macro du genre:

Public Function touche()

CustomizationContext = NormalTemplate
acode = BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyW)

    While KeyPress <> acode
    Do
    Loop
    Wend
    
    End Function


ainsi on aurait pu selectionner tranquilement ce qu'in voulait comme texte en attente de la pression simultané des touches Ctrl et Alt seulement voila mon truc avec les touche a marche pô on plus....


dit moi ce que tu en pense docteur, est ce grave?

peut tu la aussi jouer au jedi clair?

merci d'avance si tu peut, et encore merci pour tout
0
Utilisateur anonyme
29 juin 2007 à 15:10
re :

oui, en effet je n'ai pas réussi à faire fonctionner l'instruction [ InputBox ] sous Word avec
le même paramètre.

Public Function Touche()

    Dim ACode As String

    ACode = BuildKeyCode(wdKeyAlt, wdKeyControl, wdKeyW)

    While KeyPress <> ACode
        DoEvents
    Wend
    
End Function


Dans ce code,

While KeyPress <> acode ' Boucle 1
Do ' Boucle 2
Loop ' Fin boucle 2
Wend ' Fin Boucle 1


il m'apparaît que le programme s'emprisonne dans la
boucle 2 et puisque celle-ci n'a pas de condition, il n'en
sort jamais, il n'accède jamais à la ligne :
While KeyPress <> acode ' Boucle 1


Si le temps me le permet, je vais jeter un coup
d'oeil de façon plus minutieuse ce week-end !

@+

Lupin
0