Rechercher : dans
Par :

Excel/VBA Créer une cellule bouton

Dernière réponse le 28 aoû 2009 à 15:51:37 rv53, le 24 jui 2009 à 08:48:57 
 Signaler ce message aux modérateurs

Bonjour,
Excel/VBA : Je voudrais associer un bouton que j’appellerai « fusionner » à une cellule pour lancer une macro. Lorsque l’on clickera dessus, cela lancera une fusion (conventions de stages) avec les paramètres de la ligne de la cellule. Par copier/coller, je pourrai le faire sur toutes les lignes de mon tableau.
Merci d’avance

Configuration: Windows XP
Firefox 3.0.12

1

michel_m, le 24 jui 2009 à 08:56:43
  • +1

Bonjour,

Tu pourrais lancer ta macro en cliquant sur la cellule: cette macro événementiell démarre quand yu cliques dans l'espace A1 A100

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A1:A100")) Is Nothing Then: Exit Sub

'...ton code ou appel de ta macro

End Sub


"Target" représente la cellule cliquée
target.row te donne la ligne

pour installer clic droit sur l'onglet de ta feuille- visualiser le code- Cordialement, Michel

Répondre à michel_m

2

rv53, le 29 jui 2009 à 08:08:25

Merci Michel, cela fonctionne bien.
Il me reste à trouver une macro pour lancer word et, mieux encore, activer une fusion correspondant au N° de la ligne de la cellule activée.
Pas de la tarte!!!

rv53

Répondre à rv53

3

RV53, le 30 jui 2009 à 22:04:54

Pour passer des variables d'Excel à Word je fais :
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Dim monParametreVB As Integer
etc.

mais le compilateur ne peut compiler. Il me dit "type défini par l'utilisateur non défini"
Avez-vous une solution?
RV53

Répondre à RV53

4

RV53, le 26 aoû 2009 à 11:05:32

Je viens de de faire un tableau qui complète par signets un document word (convention) :
Set WordApp = CreateObject("word.application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open("C:\mondocument.doc") 'ouvre document Word
WordApp.Visible = True 'word non masqué pendant l'operation
'les signets du document Word sont nommés Signet1 et Signet2
WordDoc.Bookmarks("Signet1").Range.Text = Cells(ligne, 1)
WordDoc.Bookmarks("Signet2").Range.Text = Cells(1, 2)
ActiveDocument.SaveAs Filename:="mondocument " & Cells(ligne, 1) & " " & Cells(ligne, 6) & ".doc", _
FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False
Set WordDoc = WordApp.Documents.Open("C:\mondocument.doc")
ActiveDocument.Close 0

Je ne peux faire la manip qu'une fois correctement. La seconde fois, le débogueur bloque "erreur 462. Le serveur distant n'existe pas ou n'est pas dispo".
Y a-til une solution?
Merci

Répondre à RV53

5

michel_m, le 26 aoû 2009 à 11:22:46

Bonjour,
tes 2 dernières lignes posent problème ( a mon avis, donC...)
Set WordDoc = WordApp.Documents.Open("C:\mondocument.doc")
ActiveDocument.Close 0


le pointeur wordDoc est déjà activé ligne2... et donc, VBA n'est pas d'accord (mondocument est ouvert et il y a déjà un pointeur wordDoc d'affecté)


par principe lorsque tu active un pointeur par SET (qqsoit l'objet), il vaut mieux terminer ta macro en libérant
set machin=nothing
set truc=nothing Cordialement, Michel

Répondre à michel_m

6

RV53, le 27 aoû 2009 à 21:19:50

Cela ne marche pas plus même en faisant set WordDoc=nothing ou WordApp=nothing.
La seconde fois il bloque à la ligne de sauvergarde du fichier que j'ai créé.
Même en supprimant les 2 dernières lignes.
Je pensais qu'après avoir crée et sauvegardé le nouveau document, l'original restait quelque part, et les 2 dernières lignes servaient à le fermer sans le modifier.
Merci et A+

Répondre à RV53

7

RV53, le 27 aoû 2009 à 21:35:29

J'ai l'impression que c'est 'activedocument' qui pose pb. Il me dit qu'il contient "<le serveur distant n'existe pas ou n'est pas disponible>". Message qui apparaî dans le message d'erreur du débogueur!
A+

Répondre à RV53

8

michel_m, le 28 aoû 2009 à 09:33:53

Bonjour,

je viens de retrouver sur une étagère de mon grenier un essai datant de 200"-2004 pour des liaisons
entre XL et WD où le pb activedocument provoquant l'erreur "serveur distant" est évoqué.
peut être que...
http://cjoint.com/?iCjApylxtB

en espèrant que... Cordialement, Michel

Répondre à michel_m

9

 RV53, le 28 aoû 2009 à 15:51:37

J'ai trouvé la solution en utilisant
With WordDoc
.SaveAs "D:\Sanceau\STAGES\convstage " & Cells(ligne, 1) & " " & Cells(ligne, 2) & " " & Cells(1, 6) & ".doc"""
End With
cela marche tb.
Maintenant je coince sur l'automatisation d'un lancement du pdf. J'arrive à lancer une impression sur l'imprimante par défaut mais quand j'utilise ActivePrinter = "PDFCreator" pour changer d'imprimante, j'ai une erreu 1004 la méthode ActivePrinter de l'objet global a échoué!!!!!!
J'avance doucement (ainsi que la rentrée scolaire!!!!)
Merci Michel

Répondre à RV53