J'ai un fichier Word duquel je lance une macro.
(publipostage avec enregistrement du fichier avec un nom prédéterminé (DocName).)
En parallèle, j'ai un fichier Excel qui est ouvert et où je sélectionne une cellule.
Je souhaiterais qu'à la fin de ma macro Word, je puisse lui faire inscrire la variable DocName dans la cellule active que j'ai préalablement sélectionné dans le fichier Excel.
Si qqn pouvait me sortir un petit bout de code ou une piste de réflexion ce serait super sympa à lui.
Bonjour,
Bien (on connaît maintenant ton but)
Il nous reste à savoir ce que tu as au moins tenté d'écrire pour résoudre cette difficulté.
Tu as plusieurs discussions et sources, sur ce forum qui est doté d'un moteur de recherche, traitant du pilotage d'une application acceptant l'automation (c'est le cas de Excel). Et ce que tu cherches à faire se fait très précisément par "pilotage".
Il ne s'agit pas d'être un expert mais un petit peu quand même.
Je suis Technicien Projeteur en VRD et pas Informaticien.
Mes vieux souvenirs d'école me permettent d'avoir une certaine logique pour la programmation. Pour ton info je me suis créé plusieurs petits programmes sous excel avec l'aide de ce forum et du bouquin VBA excel pour les nuls!
Je ne connais pas du tout vba word qui visiblement est différent alors excuse moi de demander un coup de main, je n'ai pas tout le loisir de faire des recherches sur le forum.
Ne m'aide pas il n'y a aucun problème mais franchement toi ça fait plusieurs fois que tu te montres en donneur de leçons avec moi et d'autres visiblement pendant que d'autres n'hésitent pas à donner une aide gratuite ce qui me semble etre le but d'un forum. Je ne suis pas la pour apprendre le vba! J'ai juste besoin d'une ligne de code et je la trouverais meme si ce n'est pas grace à toi
Merci quand meme
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Désolé, mais (j'ai l'habititude de le rappeler), ce forum n'est pas un distributeur de code à copier/coller, mais un forum d'aide à des développeurs, aide sur une difficulté spécifique et parfaitement isolée.
Si tu viens ici, c'est en développeur, que tu viens.
Si tu es développeur débutant, tu y viens en tant que débutant, mais tu DEBUTES. Et tu commences s'il te plait par ce par quoi je t'ai dit de commencer.
Merci de te conformer aux règles de ce forum.
Quant à :
Je ne suis pas la pour apprendre le vba! J'ai juste besoin d'une ligne de code et je la trouverais meme si ce n'est pas grace à toi
1) je préfère ne pas commenter !
2) ce n'est pas UNE ligne de code, mais un ensemble d'instructions, dans le cas que tu veux traiter !
Je te laisse donc là !
Je ne connais pas du tout vba word qui visiblement est différent
m'a suffisamment intrigué pour que j'aille voir dans VBA Word (pour ton info, je ne me sers jamais de word).
J'ai donc ouvert dans l'aide VBA1 Word, la rubrique :
CreateObject, fonction
(en te rappelant que je t'ai parlé plus haut de cette fonction, ainsi que de la fonction GetObject)).
Elle est exactement la même que celle de l'aide de VBA Excel (et pour cause).
Et ô surprise ! l'exemple principal dont est assortie cette rubrique est très précisément celui de la modification, depuis Word, de la valeur d'une cellule d'une feuille Excel. (ce que tu veux faire, donc !)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Revenons quand même à ton tout premier message dans cette discussion :
1)
En parallèle, j'ai un fichier Excel qui est ouvert et où je sélectionne une cellule.
Tu as donc ouvert ce classeur manuellement
2)
Je souhaiterais qu'à la fin de ma macro Word, je puisse lui faire inscrire la variable DocName dans la cellule active que j'ai préalablement sélectionné dans le fichier Excel.
Et là encore, tu interviens manuellement.
On est là un peu loin de l'informatisation (ouverture manuelle ... sélection manuelle )
Mets donc dans ce cas la valeur de ta variable DocName dans le press-papier (je crois que Word VBA le permet par la méthode copy), puis colle manuellement dans ta cellule Excel (puisque intervention manuelle de toutes manières ...)
J'ai fait aussi l'aide VBA sur GetObject et je n'ai pas eu la chance d'avoir cet exemple là. Dommage!!! Moi il s'agit d'un exemple avec drawing...
Bref, merci pour ta suggestion de copy manuelle mais du coup la methode GetObject me permet d'ouvrir le fichier excel déjà créé meme s'il est fermé donc je vais automatiser la démarche jusqu'au bout.
J'ecris:
set MonExl= GetObject("F:........\...xls")
si j'écris MonExl.worsheets("....").activate
cela fonctionne.
Par contre, je n'ai pas de méthode pour aller chercher mes cellules:
ActiveCell ne fonctionne pas, Range ne fonctionne pas Cells non plus...
Je suis à court d'idée, je ne trouve nulle part qqch qui ressemble à ça dans l'aide
Ce n'est pourtant pas difficile.
Tu as un objet classeur (ton objet MonExl
Cet objet classeur contient une collection WorkSheets
et donc :
Dim mafeuille As Excel.WorkSheet
Set mafeuille =MonExl .Worksheets("Feuil1")
fait que l'objet mafeuille est la feuille Feuil1 de l'objet classeur MonExl
tu as dès lors accès à tous les objets de l'objet mafeuille :
dont :
mafeuille.Range( .....)
mafeuille.selection
etc ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Comment te répondre autrement ?
Je ne sais plus !
Une autre fois, donc : Activecell n'est pas un objet, Selection en est un.
Et tu pilotes des objets, pas des propriétés.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Effectivement cela m'avais fait avancé mais toujours rien sur activecell que j'ai déjà utilisé des dizaine de fois sous excel mais là apparement ça ne veut pas.
J'ai récupéré mon objet excel GetObject, puis mon objet feuille
Pour ma cellule active j'ai meme essayé
col = ActiveCell.Column
lig = ....
Variable objet ou vabiable de bloc with non définie
Ce qui fonctionnait très bien sous excel
Malheureusement j'entend bien ce que veut me dire ucfoutu mais je ne trouve pas de solution!
Je ne vois pas pourquoi tu te focalises sur ActiveCell
Je souhaiterais qu'à la fin de ma macro Word, je puisse lui faire inscrire la variable DocName dans la cellule active que j'ai préalablement sélectionné dans le fichier Excel.
Dans le lien que je t'ai donné tu as ta solution, il suffit de l'adapter:
Dim i As Integer
Dim somme As Integer
Dim appExcel As Excel.Application
Dim sheet As Excel.Worksheet
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un nouveau vierge
appExcel.Workbooks.Add
Set sheet = appExcel.ActiveWorkbook.ActiveSheet
somme = 0
'Parcours des cellules : A correspond à la première case de mon tableau et F à la sixième
For i = 1 To 6
'La propriété Cells(n°ligne,n°colonne) permet de sélectionner une seule cellule
somme = somme + sheet.Cells(3,i).Value
Next i
'La propriété Range(zone) permet de sélectionner une zone. La variable zone est une chaine de caractère de la forme "B5:T20" (cellule du coin haut gauche et cellule bas droite séparée par le caractère ':')
sheet.Range(colHeader(2) & "4:" & colHeader(2) & "4").Select
'La chaine formée par colHeader(2) & "4:" & colHeader(2) & "4" donne "B4:B4" ce qui sélectionne une seule cellule
sheet.Selection.Value = somme
La cellule que je sélectionne n'est jamais la même!!! Tjs la meme colonne soit mais jamais la meme ligne. Et je ne peux pas non plus chercher la 1ère cas vide.
Comment programmer cela à l'avance autrement que par la cellule active?
Je croyais que tu faisais tout par code. Voici la solution pour avoir la colonne et la ligne sélectionner manuellement à mettre dans la feuille active
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim colonne, ligne As Integer
colonne = Target.Column
ligne = Target.Row
MsgBox colonne
MsgBox ligne
End Sub