Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2007, 17h29   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 2
Points : 2
Par défaut [VBA-W] - AUTONEW et Rafraichissement

Bonjour,
J'ai dans un modele word, une procedure qui me passe une zone de texte en case à cocher (1=coché, 0=décoché)... Cette procedure fonctionne.

J'ai voulu la faire tourner à l'ouverture d'un nouveau document de ce modele,
et j'ai lu qu'il fallait simplement appelé ma procedure via AUTONEW du modele... L'autonew lance bien ma procédure...MAIS!..

Malheureusement, ca ne marche pas.. comme si le champ était alimenté + tardivement... AVez-vous une idée?
perchtp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 09h45   #2
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Bonjour et bienvenu sur le forum

Je prend Ouskel'n'or de vitesse en te demandant de nous mettre ton code dans ton prochain post, ça nous permettra de repérer plus facilement le pourquoi du comment

n'oublies pas de mettre ton code entre les balises prévues à cette effet
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 10h22   #3
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Hello Slowdrman, là tu ne risques rien, je n'ai jamais utilisé AUTONEW
Par contre, t'es mûr pour me remplacer. Tiens, je te laisse ma place
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 16h53   #4
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 2
Points : 2
Par défaut Voila pour le code.. En esperant votre aide..

J'ai un modele dont le nom de fichier est ModeleToto.Dot,
Celui-ci contient un champs texte nommé Champs7...

Le code contenu est le suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Sub AutoNew()
    faitmonchangt
End Sub
 
Sub faitmonchangt()
    Selection.GoTo What:=wdGoToBookmark, Name:="Champs7"
    Dim a
    a = Selection.Text
    Selection.Delete
    If a <> 1 Then
        Selection.InsertSymbol Font:="Wingdings 2", CharacterNumber:=-3933, _
        Unicode:=True
    Else
        Selection.InsertSymbol Font:="Wingdings 2", CharacterNumber:=-4013, _
                   Unicode:=True
    End If
    Selection.TypeText Text:=" blabla"
end sub
Si j'execute le code de la macro sur un "macrobutton", ca marche (remplacement de la valeur par la case).
Mais en Autonew (en principe, nouvelle instance de mon modele).. La valeur ne semble pas renseignée au chargement...
perchtp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 17h02   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu la mets où ta macro Public Sub AutoNew() ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 17h33   #6
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Si ça ne fonctionne pas, c'est que tu as du mettre ta fonction AUTONEW() dans le même module que la fonction faitmonchangt()

il te faut mettre AUTONEW() dans l'objet ThisDocument

ou bien créer un module nommé AutoNew dans lequel tu mettra une procédure nommé "Main" avec ton code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub Main()
    Selection.GoTo What:=wdGoToBookmark, Name:="Champs7"
    Dim a
    a = Selection.Text
    Selection.Delete
    If a <> 1 Then
        Selection.InsertSymbol Font:="Wingdings 2", CharacterNumber:=-3933, _
        Unicode:=True
    Else
        Selection.InsertSymbol Font:="Wingdings 2", CharacterNumber:=-4013, _
                   Unicode:=True
    End If
    Selection.TypeText Text:=" blabla"
end sub
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 09h58   #7
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 2
Points : 2
Par défaut AUTONEW - Localisation

Bonjour,
Ma procédure est bien dans thisdocument...et il fonctionne en "natif" word d'ailleurs...
Mais dans le word intégré à notre progiciel (lien oracle)... je pense que la mise à jour des champs s'operent apres le lancement de l'autonew.. et donc ca ne marche pas..

Merci de votre sympathique participation.
perchtp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 11h43   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu as une erreur dans ton code
Code :
1
2
3
    a = Selection.Text
    Selection.Delete
    If a <> 1 Then
J'ignore ce que tu souhaites mais je mettrais
Code :
a = Val(Selection.Text)
ou
Peut-être pour ça que ça ne va pas plus loin... Juste une idée

Edit
Le remplacement par blabla supprime le signet.
A toutes fins utiles
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 13h53   #9
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 2
Points : 2
Par défaut Autonew - Ok sous Word

Bonjour,
J'avais remarqué ce petit probleme de a<>1=>a<>"1"...
Vos 2 solutions fonctionnent effectivement en word "classique".

En fait, je suis dans un "intégré", qui n'utilise pas de mergefield pour acceder la base de données, mais un simple "texte" où le textepardefaut sert de rubrique vers oracle (ca rebalance une requete pour récupérer la valeur)...
Voila donc pourquoi ca ne veut pas marcher.. un composant doit acceder à word apres cet autonew...

Vous avez été tres cool.. Merci...
perchtp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 14h05   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
J'ai vu passer un code qui "pourrait"... "peut-être" résoudre ton problème
Consiste à utiliser Le préfixe "WordBasic". Je te passe l'adresse. Je pense qu'il est dans une config voisine de la tienne.
Tu vas à la réponse 3.
Juste pour t'indiquer une direction de recherche possible.
Bonne chance
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h03.


 
 
 
 
Partenaires

Hébergement Web