Bonjour
je souhaiterais connaître la commande qui permet, à l'aide d'une macro, d'inserer le nom du document dans celui-ci.
Bonjour
je souhaiterais connaître la commande qui permet, à l'aide d'une macro, d'inserer le nom du document dans celui-ci.
bonjour,
c'est à dire?
que veux-tu récupérer le nom du document ouvert sur lequel tu travailles?
va voir ici peut etre
rémi
C'est pour pouvoir inclure dans une macro plus complexe la fonction de récupération du nom du document afin qu'il apparaisse parmi les différentes tâches de ma macro
+1Envoyé par Gruget
Quel document ? Où se trouve-t-il ? Est-il ouvert ?
Le document se trouve sur le disque dur. Il est bien ouvert et c'est bien son nom que je cherche à récupérer.
Pourquoi une macro !
un champ le fait aussi bien.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
C'est pour pouvoir inclure cette fonction de récupération de nom dans une macro un peu plus complexe, une sorte d'étape quoi.
Te donne le nom et le chemin du fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Sub chemin() Dim stTemp As String stTemp = ActiveDocument.Path stTemp = stTemp & "\" & ActiveDocument.Name Debug.Print stTemp End Sub
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
C'est pour deux choses:
la première serait simplement l'entrée du nom du document dans n'importe quel emplacement du document ouvert
la deuxième serait de pouvoir completer une macro que ce forum m'a déjà bien aidé à écrire. Il s'agit d'une macro de récupération de lignes d'un tableau vers un autre document word et je souhaiterais que le nom du document d'où viennent les lignes récupérées apparaissent si possible dans le nouveau tableau.
Voilà le code déjà réalisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub recapitulatif() Dim objTable As Table Dim i As Integer Dim a As String Set objTable = ThisDocument.Tables(1) For i = 1 To objTable.Rows.Count a = Left(objTable.Cell(i, 2).Range.Text, InStr(objTable.Cell(i,2).Range.Text, vbCr) - 1) If a = "D" Then objTable.Rows(i).Select Selection.Copy Documents.Open FileName:="C:\docs word\récap.doc", _ ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", Revert:=False, _ WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _ wdOpenFormatAuto, XMLTransform:="", DocumentDirection:=wdLeftToRight Selection.PasteAndFormat (wdPasteDefault) End If Next i End Sub
ThisDocument.name donne le nom du document contenant les macros,
ActiveDocument.name donne le nom du doc actif.
Pour placer l'un ou l'autre, tu te places là où tu veux qu'ils soient et tu fais
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.TypeText Text:=ActiveDocument.name
Si tu veux le chemin, Heureux-oli t'a donné le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.TypeText Text:=ThisDocument.name
Tu dis
Merci c'est sympa de m'aider encore une fois.
Grâce à vos conseils j'ai presque réussi à faire ce que je voulais et voici le code, qui ne doit pas être le plus simple mais qui marche quand même:
Comme ça j'ai le nom de chaque document dont je tire les lignes de tableau sur le récapitulatif. Le seul hic, c'est que le nom du document est suivi de l'extension .doc. Ne peut-on pas éviter ce dernier point?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub recapitulatif() Dim objTable As Table Dim i As Integer Dim a As String Set objTable = ThisDocument.Tables(1) Dim stTemp As String Dim nbr As Integer nbr = 0 stTemp = ActiveDocument.Name For i = 1 To objTable.Rows.Count a = Left(objTable.Cell(i, 2).Range.Text, InStr(objTable.Cell(i, 2).Range.Text, vbCr) - 1) If a = "D" Then objTable.Rows(i).Select Selection.Copy Documents.Open FileName:="C:\Documents and Settings\fdufour\Bureau\Essai récapitulatif b.doc", _ ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", Revert:=False, _ WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _ wdOpenFormatAuto, XMLTransform:="", DocumentDirection:=wdLeftToRight Selection.PasteAndFormat (wdPasteDefault) nbr = nbr + 1 End If Next i Selection.MoveUp Unit:=wdLine, Count:=nbr Selection.InsertRowsAbove 1 Selection.TypeText Text:=stTemp End Sub
Déjà, simplifie cette ligne
Tu peux supprimer tous les paramètres par défaut. la syntaxe suivante donne le même résultat (!)Documents.Open FileName:="C:\Documents and Settings\fdufour\Bureau\Essai récapitulatif b.doc", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:="", DocumentDirection:=wdLeftToRight
Pour ta question, je ne comprends pas. Pour ouvrir ton doc, tu as besoin de l'extension...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Documents.Open FileName:="C:\Documents and Settings\fdufour\Bureau\Essai récapitulatif b.doc"
Explique
A+
Je vois. Je parlais du résultat final. Le nom de fichier obtenu grâce à la commande:
me renvoie le nom_du_document.doc et c'est cette extension que je souhaite ne pas faire apparaître.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Selection.MoveUp Unit:=wdLine, Count:=nbr Selection.InsertRowsAbove 1 Selection.TypeText Text:=stTemp
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.TypeText Text:=left(stTemp,instr(stTemp,".doc")-1)
Pour des explications, F1 sur left, instr et len
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.TypeText Text:=Left(stTemp,Len(stTemp)-4)![]()
Ok super c'est ça. Nickel Chrome merci beaucoup les gars c'est super.![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager