Diverses petite questions

Résolu
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007 - 2 mai 2007 à 18:47
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007 - 19 mai 2007 à 12:39
Bonjour a tous ,


Je suis entrin de creer une interface utilisateur sur word pour faire du stockage dans excel.


J'ai rencontré quelques problemes je viens donc vous poser mes questions :


1° Je voudrais savoir quelle commande je dois utiliser pour enregistrer un doc excel que ma macro a modifié et qui existait deja (avec trois feuilles contenant des tableaux)  , j'ai essayé appliexcel.save mais quand j'ouvre par la suite le doc excel, il ne contient plus aucune feuille?

2° J'ai fais un bouton sous word sur la feuille, et je voudrais qu'il ne soit pas statique mais qu'il se deplace sur le coté droit de la page, lorsque l'utilisateur fait défilé le document , de facon a ce qu'il l'ai toujours sous la main.

3° Je voudrais creer un bouton "parcourir" pour que l'utilisateur selectionne un fichier, et stocker dans une variable le chemin vers celui-ci, j'ai trouvé des sujets qui en parlait sur le forum mais rien n'a fonctionné pour moi.

4° Je voudrais que mon code , renomme un fichier excel deja existant mais je ne sais pas comment faire.

5° L'utilisateur donne une valeur a une variable sur ma form1 et je voudrais pouvoir utiliser cette valeur dans ma form2 , j'ai essayé de declarer la variable dans la partie generale puis dans un module mais aucune des deux techniques ne fonctionnent , qu'elle est la marche a suivre precisement.

6° Mes champs textes sur mes forms ne permettent pas le click droit pour par exemple copier ou coller et je voudrais permettre cela faut il ajuster une propriété.

7° Et je voulais savoir si il est possible que ma macro reconnaisse le numero de page ou l'utilisateur se situ lors de sa lecture.

Merci de m'avoir de lu deja.

Merci d'avance de l'aide que vou m'apporterez.

32 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 mai 2007 à 08:42
Salut,
Je suis sûr que tu as déjà trouver tes solutions....

1°) Pour sauver un classeur excel il te faut utiliser Save mais sur un objet de type WorkBook.(il semblerait que tu le fasse sur l'objet Application, qui, soit dit en passant, ne possède pas de méthode Save) il serait judicieux de donner tes definitions de variables. (utilise tu une référence pour ton projet ou bien des variables issue d'un CreateObject

2°) Pourquoi ne pas insérer un Menu dans Word que l'utilisateur pourra aller chercher n'importe plutôt que de se trimbaler avec un bouton...

3°) Qu'as tu trouver? je crois que le Microsoft Common Dialog Control est pour toi. (avec ces méthode ShowOpen Et ShowSave)

4°) Est ce que tu veux le renommer lorsque'il est ouvert ou pas? Si pas besoin d'être ouvert alors utilise Name Source As Destination
Avec Source le nom de départ et destination le nom d'arriver

5°) Tu as du te tromper quelques part car cela fonctionne, déclarée en public dans un module une variable est accessible partout
Public TOTO As String , TOTO sera visible et modifiable depuis tes deux UserForm

6°) Il faut passer par un PopUpMenu

7°) il suffit de chercher un peu sur Google....
Dim ActivePage As Integer
ActivePage = Selection.Information(wdActiveEndPageNumber)
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 mai 2007 à 09:03
Re,
Je t'ai trouvé et adapter (commenté) un petit exemple pour le point 2°) l'exemple ci dessous est à ajouter dans le code de thisDocument
Sub CreateCommandBar()
Dim oCommandBar As CommandBar
Dim oControl As CommandBarButton
CustomizationContext = ActiveDocument.AttachedTemplate
On Error Resume Next
   'On l'efface au cas ou elle est été
   'déjà presente
   CommandBars("MaBar").Delete
On Error GoTo 0
   'on ajoute un bar de commande a WORD (elle sera ancree)
   'Si tu veux qu'elle soit flottante sur ton document
   'remplace msoBarTop par msoBarFloating
   Set oCommandBar = CommandBars.Add("MaBar", msoBarTop)
   'on la rends visible
   oCommandBar.Visible = True
   'on lui ajoute un bouton
   Set oControl = oCommandBar.Controls.Add(msoControlButton)
   'ca c'est le ToolTip
   oControl.Caption = "TonTitre"
   'ca c'est le nom de la procédure à appeler si on appuie dessus
   oControl.OnAction = "TaProcedure"
   oControl.FaceId = 250 'Ca c'est un indice pour l'icone à mettre (connais pas les valeurs)

End Sub<hr />Sub TaProcedure()
MsgBox "Tu as appuye sur le bouton de ta command Bar"
End Sub<hr />

Private Sub Document_Open()
   CreateCommandBar
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 mai 2007 à 07:55
Re,
Content que tu avances.
3°) pas de CommonDialogu pour ton cahier des charges.... pas de bol. Si ce n'est que le chemin que tu veux demander, tu peux essayer un module qui s'appelle BrowseForFolder

6°) j'ai regarder un peu hier mais je n'ai rien réussi à faire. je vais réessayer aujourd hui

8°)Ce qu'il te faut sont les fonction Mid, Len, InstrRev
Soit en mixant le tout
Dim Chemin As String
Dim NomUtil As String
Dim NomTotal As String
'le chemin
Chemin = "C:\Test\Fichier.xls"
NomUtil = "Ajout_"
NomTotal = Mid(Chemin, 1, InStrRev(Chemin, "\")) & NomUtil & Mid(Chemin, InStrRev(Chemin, "\") + 1)
MsgBox NomTotal, ----
[code.aspx?ID=41455 By Renfield]
9°) AUCUNE IDEE
@+: Ju£i?n
Pensez: Réponse acceptée
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 mai 2007 à 08:23
Bonjour,

Je vois qu'on t'emposinne l'existence en t'imposant de ne pas utiliser un contrôle commonDialog
Je suppose qu'on t'interdit alors également l'emploi d'une fonction de l'Api de indows qui ferait la même chose...

Qu'à celà ne tienne !m

Sur ton userform :

- 1 drivelistbox nommée Drive1
- 1 dirlistBox nommée Dir1
-1 FileListbox nommée File1

Code :

Private Sub Command1_Click()
  'tu peu forcer le choix du drive
  'exemple :
  'Drive1.Drive = "d:"
  ' tu peux également forcer le répertoire, exemple
  Dir1.Path = "d:\monoutil"
End Sub


Private Sub Drive1_Change()
 Dir1.Path = "d:"
End Sub
Private Sub Dir1_Change()
  File1.Path = Dir1.Path
  'tu peux forcer l'extension, si tu veux, exemple
  File1.Pattern = "*.xls"
End Sub


Private Sub File1_Click()
  MsgBox Dir1.Path & "" & File1.filename
End Sub






 
3

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 mai 2007 à 08:30
Re,
De retour pour
6°)IL Y A SANS DOUTE PLUS SIMPLE MAIS JE NE CONNAIS PAS
 j'ai trouve grâce aux Google Groupe (une mine d'or d'info)
Pour ne pas "polluer" le forum avec un simple copier coller voici le lien interessant

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 mai 2007 à 08:01
Salut,

A°) Aucune idée pour l'instant

B° qu'est ce que tu ne comprends pas?
alors lorsque tu ne comprends pas une procédure tu peux aller voir la MSDN disponible sur internet (ou pour les plus chanceux directement sur leur poste avec F1)
En gros:
Mid te permet d'extraire une partie d'un chaine de caractère (premier parametre), en lui passant la position du premier caractere à prendre (second parametre) , et la longueur (dernier parametre). si le dernier parametre n'est pas mis alors il prendra la "sous chaine" a partir de la position dite jusqu'à la fin.
Len: bah ca te renvoi la longueur d'une chaine de caractere.
InstrRev (tirée de la msdn)
Description

Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de
la fin de la chaîne.

Syntaxe

InstrRev(string1,string2[,start[,compare]])

La syntaxe de la fonction InstrRev comprend les éléments
suivants :

Élément, Description, ----
string1, <object id="alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
10 mai 2007 à 09:01
Salut,

A° Est il possible de lancer une procedure lorsqu'un utilisateurs ecrit dans Word ? Stocker ce qu'il ecrit dans une variable? Localiser l'endroit ou il a ecrit?

J'ai vu une méthode ResolveConflict qui permet de vérifier la présence de conflit entre 2 documents.

Par contre pour l'évenement sur modification, je n'ai pas trouvé mais tu peux passé par l'evenement DocumentBeforeSave ou encore (si c'est possible) de détecter l'appui sur OK dans la fenetre qui Word affiche lorsque l'on quite un doc sans sauver (donc présence de modification detecté par Word).

J'ai pas beaucoup cherché mais ca me semble pas etre trivial.
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
11 mai 2007 à 08:01
Alors pour le Set mavariable=Nothing, normalement ca doit fonctionner. S'il te demand un objet, c'est que cet objet n'est pas créer (erreur de synthaxe peut etre). Donne nous la déclaration de cette variable et son utilisation car ca me parait bizarre.

Pour ta 2eme question, je sais pas ce qu'est un RADIO bouton. Je connais bouton commande et bouton option mais c'est tout. Dis moi comment on fait pour en mettre un dans une cellule et je pourrais t'aider sauf si jrivet passe par la.
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 mai 2007 à 09:31
Salut,
J'ai pas résussi a changer la valeur d'un option button directement, mais il existe ceci.

Après avoir insérer l'otpion button directement dans la feuille , donne lui une cellule à sa propriété LinkedCell exemple Feuil2!A1 (cellule A1 de la feuille 2)

Ajoute un Bouton à coté de ton optionbutton pour tester et regarde ce code
Private Sub CommandButton1_Click()
   Static B As Boolean
   B = Not B
   Worksheets("Feuil2").Range("A1").Value = B
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
11 mai 2007 à 09:48
A oui au fait, j'ai reussi avec un truc du genre:

Feuil1.OptionButton1 = true (or false) et ca marche. Par contre, j'ai vu que le controle était vérouiller par defaut.
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 19:25
Salut,

1/ Utilise l'API _lopen

2/ rien compris
Tu veux partager ton classeur ?
Si oui, regarde dans Outils, Partager classeur

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 19:47
Tu peux partager ta macro :

Ouvre Word, enregistre une macro, il te propose Ce Document, ou Normal.Dot, tu choisis Normal.Dot et t'arrête l'enregistrement.

Avec Alt F11, t'as plus qu'à placer tes objets form / Module dans ce projet là

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 21:46
Un exemple sur un de mes snippet :

http://www.codyx.org/snippet_ouvrir-fichier-word-ou-excel-est-ouvert-copie_313.aspx
T'auras qu'à le modifier, non pas pour ouvrir une copie mais juste pour avoir le retour de valeur de ma fonction

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
3
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
3 mai 2007 à 19:24
Salut Jrivet merci beaucoupde ton aide et du code c'est vraiment sympa de t'etre investi pour m'aider !!!


Donc grace a toi 1°,2° , 4° et 7° sont resolus , sa fonctionne.
Pour 5° c'est resolu aussi, j'ai trouvé mon erreur, c'etait que pour appeler la variable il fallait faire NomDuModule.NomDeLaVariable et moi j'oubliais d'ecrire NomDuModule.


Pour 3° , tu as raison CommonDialogu est fait pour ca, mais pour des raisons techniques  (cahier des charges) je ne peu pas m'en servir dans mon projet donc je me demandais si il y avait une autre technique pour faire que l'utilisateur selectionne un chemin vers un fichier et que se chemin soit stocké dans une variable.

Pour 6° je comprends pas trop ce que tu entends par Pop Up Menu ici.

Et depuis hier j'ai rencontré de nouvelles embuches donc j'allonge la liste :

8° J'ai le chemin complet vers un fichier dans une variable, et je dois renommer ce fuchier en y ajoutant au debut la valeur d'une autre variable.
En gros j'ai ma variable "chemin" qui contient un truc du genre"c:\document\fichier.xls.
J'ai une autre variable "nom" qui contien le nom que l'utilisateur a entré.
Et je dois renommé le fichier dont il m'a donné le chemin en y ajoutant son nom devant ca donnera nom_fichier.xls
Sachant que le fichier peut avoir n'importe quel nom tout comme l'utilistauer, je suis donc obligé d'utiliser des variables. Mais je ne vois pas comment renommer que la partie du fichier qui m'interess??

9° Tout autre chose, word effectue un suivi de modification. Donc on peut lire en cliquant sur l'icone du suivi quel utilisateur a a modifié quoi dans le document.
Il faudrait que je puisse avoir accés a ce suivi , au nom de l'utilisateur et a ce qu'il a modifié pour stocker tout cela dans excel. Pareil, si quelqu'un s'est deja atardé sur le sujet son aide sera la bienvenue.

MERCI D'AVANCE ET MERCI ENCORE JRIVET
0
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
6 mai 2007 à 11:22
Merci beaucoup Jrivet de ton aide c'est super et merci a toi jmfmarques pour ton code super utile!!! C'est hyper sympa a vous de vous etre cresé la tete pour m'aider!


Je vais tester tout ca et je vous tient au courant, de toute facon j'aurais certainement d'autres petites question mais je commence a maitrisé de plus en plus visual basic!
0
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
9 mai 2007 à 19:05
Salut !

Alors j'ai rencontré deux , trois embuches aujourd'hui ,VbFrance a repondu aux trois quarts des questions que je me posais, je vous poses donc celle sans reponses :

A° Est il possible de lancer une procedure lorsqu'un utilisateurs ecrit dans Word ? Stocker ce qu'il ecrit dans une variable? Localiser l'endroit ou il a ecrit?

B° C'est toujours pour renommer les fichiers, cette fois j'ai deux variables v1 et v2 , v1 contient le chemin vers un fichier "c:\test.xls" et v2 contient un mot. Je dois renommer le fichier test.xls de cette facon : test_nom.xls, j'imagine qu'il faut se servir des fonctions Mid, Len, InstrRev comme jrivet me l'avait dit pour un probleme un peu semblabe, mais comme je n'ai pas compris comment cela fonctionné exactemen...

C° Est il possible que ma macro lance une autre macro qui existe deja ?


 


Voila c'est tout pour aujourd'hui 

MERCI D'AVANCE
0
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
10 mai 2007 à 08:23
Salut Jrivet !!

Une fois de plus merci de ton aide !! (Ca devient habituel de te remercier)

A ouai pour la MSDN je n'y avais pas penser je viens d'y jeter un oeuil , c'est genial ca apporte beaucoup d'aide!!

Sinon merci pour les explications et l'appel de macro !!

Merci en core de ton aide
0
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
10 mai 2007 à 18:47
Merci Nicko11 ! Je vais exploité tes idées je pense que je vais arrivé a quelque chose de satisfaisant (du moins pour moi)

Sinon j'ai deux petites questions :

-Comment on fait pour supprimer des variables (ou leur contenu) quand elle sont plus utilisées pour pas utiliser de la memoire inutilement?
Je pensais qu'en faisant :   Set mavariable=Nothing ca fonctionnerai, mais non ca me donne l'erreur : "Objet Requis"

-Et j'ai une feuille Excel avec un bouton radio , comment je fais pour cocher ce bouton a partir de mon code visual basic si je sais dans quelle cellule , sur quelle page et dans quel fichier excel il se trouve exactement. (juste pour le cocher  ou selectionner , vu que j'ouvre deja excel pour y ecrire des choses dans des cellules le reste ne devrait pas me poser de probleme)

MERCI
0
dj hf Messages postés 25 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 10 juin 2007
11 mai 2007 à 08:16
Salut Nicho11 !
Merci pour ta reponse!
Moi j'appelle bouton radio (je pense que toi tu appele ca bouton option) les boutons rond que tu ne peux en seletionner qu'un a la fois lorsqu'ils sont en groupe.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
11 mai 2007 à 08:42
OK, je ne connais pas Excel mais je vais essayé. Tu me dis "si je sais dans quelle cellule", mais personnellement, je sais pas comment insérer ce controle DANS une cellule.

Sinon, dans le principe, ca doit etre un truc du genre

workbook.sheets(0).nom_du_controle.value = true (or false)

s'il s'agit d'un groupe d'option bouton, ca sera plutot

workbook.sheets(0).nom_du_controle.value = 0 (rien de coché) ou 1 (premier element coché) ou 2 (2eme élément coché) et ainsi de suite.

Je vais essayé de mon coté, ca me fera un truc a apprendre. 
0
Rejoignez-nous