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

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
Configuration: Windows 2000
Internet Explorer 6.0

7 réponses

  1. Bonjour,

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

    Lupin
    1. 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
      1. 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
        1. 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
      2. merci je vais essayer ca ca l'air pas mal du tout
        je tient au courant
        1. 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
          1. 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
            1. 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
          2. 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