Excel, boite de dialogue, fichiers¯o
Résolu
Ipalgo
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
Ipalgo Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
Ipalgo Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici une demande un peu ambitieuse...
J'ai vu sous excel que l'on pouvait créer des boite de dialogues. Serait-il possible de créer ce style :
1/ Entré la référence du produit
2/ le nom du client
3/ la date
4/ la référence en interne
5/ une dizaine de case à cocher
Ensuite :
chaque case coché ferait référence à une ou deux feuilles de calcul excel situées dans un dossier quelconque. Il faudrait que ce modèle excel soit modifié en fonction des paramètre saisi en 1/ 2/ 3/ 4/ puis imprimé.
Merci aux plus courageux !
Voici une demande un peu ambitieuse...
J'ai vu sous excel que l'on pouvait créer des boite de dialogues. Serait-il possible de créer ce style :
1/ Entré la référence du produit
2/ le nom du client
3/ la date
4/ la référence en interne
5/ une dizaine de case à cocher
Ensuite :
chaque case coché ferait référence à une ou deux feuilles de calcul excel situées dans un dossier quelconque. Il faudrait que ce modèle excel soit modifié en fonction des paramètre saisi en 1/ 2/ 3/ 4/ puis imprimé.
Merci aux plus courageux !
A voir également:
- Excel, boite de dialogue, fichiers¯o
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Dialogue boost - Accueil - Guide streaming
- Boite gmail saturée - Guide
- Word et excel gratuit - Guide
19 réponses
Salut,
Cette boite de dialogue comme tu dis est une Userform avec des contrôles Textbox, Combobox, case à cocher etc ...et cela se traite en VBA (visual basic). Vu ton post tu ne connais pas et dans ce cas ce sera très difficile. Le but d'un forum est de donner quelques conseils mais pas d'écrire un programme surtout par post cela prendrait beaucoup trop de temps et nous sommes bénévoles.
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Cette boite de dialogue comme tu dis est une Userform avec des contrôles Textbox, Combobox, case à cocher etc ...et cela se traite en VBA (visual basic). Vu ton post tu ne connais pas et dans ce cas ce sera très difficile. Le but d'un forum est de donner quelques conseils mais pas d'écrire un programme surtout par post cela prendrait beaucoup trop de temps et nous sommes bénévoles.
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Bonjour à tous,
Bonjour Mike-31 et bonjour michel_m,
On apprend vite quand on est booster par les bons sites. Je vous remercie.
J'ai encore quelques difficultés. Voici le bout de code que j'ai pour transferer les données saisies dans les textbox 1/2/3/4/ vers des liens placés dans un tableau word.
Le problème est que
J'ai pourtant vérifié sous word, la référence "Microsoft Word xx.x Object Library" est bien cochée (c'est la "Microsoft Word 12.0 Object Library")
Un coup de pouce svp.
Bonjour Mike-31 et bonjour michel_m,
On apprend vite quand on est booster par les bons sites. Je vous remercie.
J'ai encore quelques difficultés. Voici le bout de code que j'ai pour transferer les données saisies dans les textbox 1/2/3/4/ vers des liens placés dans un tableau word.
Private Sub CommandButton3_Click() If CheckBox1 = True Then Dim WordApp As Word.Application Dim WordDoc As Word.Document Set WordApp = CreateObject("word.application") 'ouvre session word et le fichier voulu Set WordDoc = WordApp.Documents.Open("C:\lien") 'ouvre document Word WordApp.Visible = False 'word masqué pendant l'operation 'dans le document word, il faut avoir placé des signets aux endroits qu'on veut remplir 'à l'endroit de chaque signet qui se trouve dans le fichier word on va inscrire le contenu des cellules WordDoc.Bookmarks("RappEss").Range.Text = Cells(1, A) WordDoc.Bookmarks("Client").Range.Text = Cells(2, A) WordDoc.Bookmarks("Ref").Range.Text = Cells(3, A) WordDoc.Bookmarks("Date").Range.Text = Cells(4, A) WordApp.Visible = True 'affiche le document Word 'WordDoc.PrintOut 'si on veut imprimer 'WordDoc.Close True 'si on veut fermer le document word en sauvegardant les données 'WordApp.Quit 'ferme la session Word End If Unload Me End Sub
Le problème est que
Dim WordApp As Word.Applicationn'est pas reconnu, une boite de dialogue apparait et il est écris "Erreur de compilation: type définit par l'utilisateur non défini".
J'ai pourtant vérifié sous word, la référence "Microsoft Word xx.x Object Library" est bien cochée (c'est la "Microsoft Word 12.0 Object Library")
Un coup de pouce svp.
Salut,
Il ya 2 références à cocher!
Microsoft Word X.y object library
'et Microsoft Visual Basic For Applications Extensibility x.y
xy étant variables svt version office et Win
au passage
A dans cells(1,A), c'est quoi ?
si A est la colonne il faut écrire cells(1,1)
d'autre part j'aurais collecté les valeurs à copier dans Word au départ du code juste après les déclarations style
car une fois que tu écris set worddoc, le document actif est Word et Word ne connait pas "cells"
donc
enfin-ouf j'aurais marqué le nom du doc Word
Il ya 2 références à cocher!
Microsoft Word X.y object library
'et Microsoft Visual Basic For Applications Extensibility x.y
xy étant variables svt version office et Win
au passage
A dans cells(1,A), c'est quoi ?
si A est la colonne il faut écrire cells(1,1)
d'autre part j'aurais collecté les valeurs à copier dans Word au départ du code juste après les déclarations style
copie1=cells(1,1)
car une fois que tu écris set worddoc, le document actif est Word et Word ne connait pas "cells"
donc
WordDoc.Bookmarks("RappEss").Range.Text = copie1
enfin-ouf j'aurais marqué le nom du doc Word
Set WordDoc = WordApp.Documents.Open("C:\lien\tondoc.doc")
encore un truc
La méthode "quit" de wordapp risque de ne pas être appréciée par certains antivirus comme Macafee: cocher alors toujours accepter
enfin tu risques aussi d'avoir un bug (vieilles version office ?)au lancement de word
La méthode "quit" de wordapp risque de ne pas être appréciée par certains antivirus comme Macafee: cocher alors toujours accepter
enfin tu risques aussi d'avoir un bug (vieilles version office ?)au lancement de word
'déclaration à changer dim wordapp as object '.... '.... ' lancement de Word ' gestion de l'erreur "activeX" d'après archives MPFE Laurent Longre On Error Resume Next Set wordapp= CreateObject(class:="Word.Application") On Error GoTo 0 If Cible Is Nothing Then Set wordapp= New Word.Application End If
J'ai coché "microsoft Visual Basic for App Extensibility 5.3" dans le vba excel et le vba word mais le problème survient tjs.
" Erreur de compilation : Type défini par l'utilisateur non défini "
J'ai aussi essayé de remplacer
Sinon toutes tes intuitions étaient bonnes :
- Je compile sur une machine qui a word et excel 2007 mais c'est destiné a un poste qui possède la version 2003.
- A était pour la colonne
- faire les copie 1,2,3 etc au préalable est très malin.
" Erreur de compilation : Type défini par l'utilisateur non défini "
J'ai aussi essayé de remplacer
Dim WordApp As Word.Applicationpar le code que tu m'as fournis mais cela n'a pas marché.
Sinon toutes tes intuitions étaient bonnes :
- Je compile sur une machine qui a word et excel 2007 mais c'est destiné a un poste qui possède la version 2003.
- A était pour la colonne
- faire les copie 1,2,3 etc au préalable est très malin.
Bonjour tous,
Tu n'a pas coché la bonne bibliothèque, comme le dit Michel_m c'est ...
Microsoft Word 12.0 Object librairy
Aucune autre bibliothèque n'est nécessaire.
J'ai tester et ça fonctionne sous le 2000 et 2007
Et vaudrait mieux ajouter avant ton Unload..
Pour être certain de libérer la mémoire.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Tu n'a pas coché la bonne bibliothèque, comme le dit Michel_m c'est ...
Microsoft Word 12.0 Object librairy
Aucune autre bibliothèque n'est nécessaire.
J'ai tester et ça fonctionne sous le 2000 et 2007
Et vaudrait mieux ajouter avant ton Unload..
WordApp.Quit Set WordApp = Nothing
Pour être certain de libérer la mémoire.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Merci pour le lien.
La bibliothèque fonctionne c nickel.
Le problème maintenant à l'air d'être une mauvaise cible de signet (Erreur d'execution '5941' le membre de la collection n'existe pas ; et ça surligne
Je veux pas perdre tout mon crédit alors je vais chercher.
+
La bibliothèque fonctionne c nickel.
Le problème maintenant à l'air d'être une mauvaise cible de signet (Erreur d'execution '5941' le membre de la collection n'existe pas ; et ça surligne
WordDoc.Bookmarks("RappEss").Range.Text = copie1)
Je veux pas perdre tout mon crédit alors je vais chercher.
+
Comment faire pour que la référence 'Microsoft Visual Basic For Applications Extensibility x.y reste tjs cocher dans tout document ?
Il me semble que c'est à cause de ça que j'ai le message suivant " Variable objet ou variable bloc With non definie" et le debogeur désigne
Sinon à quoi sert les points ajouté a chaque début de ligne ?
ex :
Il me semble que c'est à cause de ça que j'ai le message suivant " Variable objet ou variable bloc With non definie" et le debogeur désigne
.Selection.TypeText (insert1)
Sinon à quoi sert les points ajouté a chaque début de ligne ?
ex :
.Visible = True .ActiveDocument.Save
Bonjour,
Hier, j'avais pas mal bidouillé dans mon fichier au cours de nos messages et je t'ai envoyé un truc foireux (ca marchait au départ et j'ai réussi à le planter comme d'hab)
Je t'envoie un autre exemple plus simple
http://www.cijoint.fr/cjlink.php?file=cj201007/cijIijFzsy.zip
le point en début de ligne permet de ne pas répéter le nom de l'objet avec lequel tu travailles
With tonobject
.visible=true
.activedocument.save
end with
ci joint capture d'écran avec les ref installées...
http://www.cijoint.fr/cjlink.php?file=cj201007/cijNktBJGA.doc
Hier, j'avais pas mal bidouillé dans mon fichier au cours de nos messages et je t'ai envoyé un truc foireux (ca marchait au départ et j'ai réussi à le planter comme d'hab)
Je t'envoie un autre exemple plus simple
http://www.cijoint.fr/cjlink.php?file=cj201007/cijIijFzsy.zip
le point en début de ligne permet de ne pas répéter le nom de l'objet avec lequel tu travailles
With tonobject
.visible=true
.activedocument.save
end with
ci joint capture d'écran avec les ref installées...
http://www.cijoint.fr/cjlink.php?file=cj201007/cijNktBJGA.doc
Salut
j'ai aussi essayé un autre truc :
c'est assez simple et pour l'instant ca marche.
C'est étrange aussi, pcq m sans faire les copies au préalable word reconnait Range("A1")
Comme à la fin je vise env une 30 aine de checkbox il faut que le fichier word et le fichier excel attaché à une checkbox se modifient vite et et que le dossier s'imprime rapidement.
( Il faut que je rajoute dedans
Je commence a bidouiller des boucles sur les checkbox mais je pense pas que ce soit la solution vu que chaque checkbox est attaché a un fichier propre.
Sinon j'essaye de remplacer le tableau par une localisation signets.
Je voudrais aussi (c'est encore loin) avoir un aperçu général du futur dossier imprimer.
Si checkbox 1,2,6 etc.. cochés alors apercu de 1,2,6 etc à la suite.
Seulement les illusions s'arretent vite vu qu'il s'agit de fichiers complètement séparés..
J'y réfléchirais plus tard.
Merci à toi en tout cas d'être aussi présent ça boost à fond !
j'ai aussi essayé un autre truc :
Private Sub CommandButton2_Click() If CheckBox1 = True Then Dim WordApp As Word.Application Dim WordDoc As Word.Document Set WordApp = CreateObject("word.application") WordApp.Visible = True 'mettre False pour garder Word masqué Set WordDoc = WordApp.Documents.Open("C:\..\*.docx") WordDoc.Tables(1).Columns(2).Cells(1).Range.Text = Range("A1") WordDoc.Tables(1).Columns(4).Cells(1).Range.Text = Range("A2") WordDoc.Tables(1).Columns(2).Cells(3).Range.Text = Range("A3") WordDoc.Tables(1).Columns(2).Cells(2).Range.Text = Range("A4") WordDoc.Tables(1).Columns(4).Cells(2).Range.Text = Range("A5") ActiveDocument.PrintPreview 'WordDoc.Close True 'ferme le document Word en enregistrant les modifications 'WordApp.Quit 'ferme l'application Word End If MsgBox "fini" End Sub
c'est assez simple et pour l'instant ca marche.
C'est étrange aussi, pcq m sans faire les copies au préalable word reconnait Range("A1")
Comme à la fin je vise env une 30 aine de checkbox il faut que le fichier word et le fichier excel attaché à une checkbox se modifient vite et et que le dossier s'imprime rapidement.
( Il faut que je rajoute dedans
WordApp.Quit Set WordApp = Nothinget le code archives MPFE Laurent Longre)
Je commence a bidouiller des boucles sur les checkbox mais je pense pas que ce soit la solution vu que chaque checkbox est attaché a un fichier propre.
Sinon j'essaye de remplacer le tableau par une localisation signets.
Je voudrais aussi (c'est encore loin) avoir un aperçu général du futur dossier imprimer.
Si checkbox 1,2,6 etc.. cochés alors apercu de 1,2,6 etc à la suite.
Seulement les illusions s'arretent vite vu qu'il s'agit de fichiers complètement séparés..
J'y réfléchirais plus tard.
Merci à toi en tout cas d'être aussi présent ça boost à fond !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Essaye d'envoyer un MP à argixu, voir s'il à encore l'exemple ou qu'il puisse te le réexpliquer.
A+
Essaye d'envoyer un MP à argixu, voir s'il à encore l'exemple ou qu'il puisse te le réexpliquer.
A+
Bon, avant de terminer mon programme il faut que je passe par autre chose.
J'ai une liste de fichier MODELE EXCEL dans lesquels je dois modifier des lettres etc et ensuite les réenregistrer en tant que modèle excel.
Ca donne ca :
Ce code marche très bien pour des fichiers xls (déjà essayé) mais quand je veux l'appliquer à des .xlt ça affiche " erreur d'éxécution '9': L'indice n'appartient pas à la séléction. " et
Inspiration divine ?..
J'ai une liste de fichier MODELE EXCEL dans lesquels je dois modifier des lettres etc et ensuite les réenregistrer en tant que modèle excel.
Ca donne ca :
Dim Fich As String Const chemin = "C:\Documents and Settings\Pierre-Amaury\Bureau\Masques communs IFTH\" Fich = Dir(chemin & "*.xlt") Do While Fich <> "" Workbooks.Open chemin & Fich 'là c'est le code saisi à la souris Workbooks(Fich).Close True Fich = Dir Loop End Sub
Ce code marche très bien pour des fichiers xls (déjà essayé) mais quand je veux l'appliquer à des .xlt ça affiche " erreur d'éxécution '9': L'indice n'appartient pas à la séléction. " et
Workbooks(Fich).Close Trueest surligné.
Inspiration divine ?..
Bonjour à tous,
j'espère avoir une reponse assez rapide m par ce chaud moi de juillet.
Je suis toujours occupé avec mes checkbox, j'ai réussi a avoir un code qui fonctionne pour 1 checkbox.
détail : 1/je rentre des infos dans 5 textbox
2/ je coche 1 checkbox sur 20
3/ comme elle est cochée au moment ou je clique sur ok le texte qui a été saisi dans les 5 textbox se recopie à 5 signet respectifs. C'est signets se trouvent dans un fichier word.
4/ le fichier s'imprime
5/ le fichier se ferme sans enregistrer les modifs.
Le problème est le suivant, quand je copie colle ce code sous les autres checkbox un message d'erreur apparait :
"Erreur de compilation : déclaration existante dans la portée en cours"
et cette ligne est surlignée :
Voici le code en question :
merci de me faire partager vos intuitions
j'espère avoir une reponse assez rapide m par ce chaud moi de juillet.
Je suis toujours occupé avec mes checkbox, j'ai réussi a avoir un code qui fonctionne pour 1 checkbox.
détail : 1/je rentre des infos dans 5 textbox
2/ je coche 1 checkbox sur 20
3/ comme elle est cochée au moment ou je clique sur ok le texte qui a été saisi dans les 5 textbox se recopie à 5 signet respectifs. C'est signets se trouvent dans un fichier word.
4/ le fichier s'imprime
5/ le fichier se ferme sans enregistrer les modifs.
Le problème est le suivant, quand je copie colle ce code sous les autres checkbox un message d'erreur apparait :
"Erreur de compilation : déclaration existante dans la portée en cours"
et cette ligne est surlignée :
Dim WordApp As Word.Application
Voici le code en question :
If CheckBox1 = True Then Dim WordApp As Word.Application Dim WordDoc As Word.Document Dim i As Byte Set WordApp = CreateObject("word.application") 'ouvre une session Word Set WordDoc = WordApp.Documents.Open("C:\cible\doc_Word_du_checkbox1.doc") 'ouvre le document Word WordApp.Visible = False 'Word est masqué pendant l'opération For i = 1 To 5 'les signets du document Word sont nommés Signet1 à Signet5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) 'copie des cellules A1 à A5 (c'est à dire le texte des textbox) à l'emplacement des signets word Next i WordApp.Visible = True 'affiche le document Word 'WordDoc.Close False 'ferme le document word sans sauvegarder 'WordApp.Quit 'ferme la session Word End If If CheckBox2 = True Then Dim WordApp As Word.Application Dim WordDoc As Word.Document Dim i As Byte Set WordApp = CreateObject("word.application") Set WordDoc = WordApp.Documents.Open("C:\cible\doc_Word_du_checkbox2.doc") WordApp.Visible = False 'Word est masqué pendant l'opération For i = 1 To 5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) Next i WordApp.Visible = True 'affiche le document Word 'WordDoc.Close False 'ferme le document word sans sauvegarder 'WordApp.Quit 'ferme la session Word End If Et ainsi de suite avec les autres checkbox
merci de me faire partager vos intuitions
Bonjour
essaies plutôt
Dim WordApp As object
puisque un peu plus loin tu as
Set WordApp = CreateObject("word.application")
essaies plutôt
Dim WordApp As object
puisque un peu plus loin tu as
Set WordApp = CreateObject("word.application")
En modifiant avec Dim WordApp As Object cela marche pour Une chexbox mais dès que je souhaite en cocher 2 le problème persiste :
"Erreur de compilation : déclaration existante dans la portée en cours"
et cette ligne est surlignée :
J'ai essayé de modifier le nom comme ceci :
et l'erreur se reproduit juste à la ligne en dessous :
"Erreur de compilation : déclaration existante dans la portée en cours" et surligne :
En fait c'est comme si j'avais fait 2 déclaration de variables donc une en trop mais je vois pas comment en faire qu'une.
"Erreur de compilation : déclaration existante dans la portée en cours"
et cette ligne est surlignée :
Dim WordApp As Object
J'ai essayé de modifier le nom comme ceci :
Dim WordApp2 As Object Dim WordDoc2 As Word.Document
et l'erreur se reproduit juste à la ligne en dessous :
"Erreur de compilation : déclaration existante dans la portée en cours" et surligne :
For i = 1 To 5
En fait c'est comme si j'avais fait 2 déclaration de variables donc une en trop mais je vois pas comment en faire qu'une.
Tes déclarations ne sont à faire qu'une seule foisdans la procédure! généralement, on les saisit juste sous le titre de la macro
d'autre part es tu sûr qu'il faille quitter wordapp à chaque checkbox ?
a la fin de chaque checkbox tu libères seulement worddoc par
set worddoc=nothing après avoir sauvegardé ton transfert
d'autre part es tu sûr qu'il faille quitter wordapp à chaque checkbox ?
a la fin de chaque checkbox tu libères seulement worddoc par
set worddoc=nothing après avoir sauvegardé ton transfert
Bonjour,
Peut-être une exemple ??
A+
Peut-être une exemple ??
Sub VVV() Dim WordApp As Word.Application Dim WordDoc As Word.Document Dim i As Byte Set WordApp = CreateObject("word.application") 'ouvre une session Word Set WordDoc = WordApp.Documents.Open("C:\cible\doc_Word_du_checkbox1.doc") WordApp.Visible = False 'Word est masqué pendant l'opération'ouvre le document Word If CheckBox1 = True Then For i = 1 To 5 'les signets du document Word sont nommés Signet1 à Signet5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) 'copie des cellules A1 à A5 (c'est à dire le texte des textbox) à l'emplacement des signets word Next i End If If CheckBox2 = True Then For i = 1 To 5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) Next i End If 'Et ainsi de suite avec les autres checkbox WordDoc.Close False 'ferme le document word sans sauvegarder WordApp.Quit 'ferme la session Word Set WordDoc = Nothing Set WordApp = Nothing End Sub
A+
En fait comme il existe un document word et un excel bien spécifique à chaque chekbox je ne peux pas en ouvrir qu'un seul et le modifier en fonction des 20 checkbox.
Par contre je peux ouvrir l'application word et excel et les fermer qu'a la fin.
cette partie du code se répète à chaque chexbox, y a t il un moyen de faire un raccourci ?
Par contre je peux ouvrir l'application word et excel et les fermer qu'a la fin.
cette partie du code se répète à chaque chexbox, y a t il un moyen de faire un raccourci ?
For i = 1 To 5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) Next i
Tu veux raccourcir ?
Remplace tout le code de l'userform par
Seule obligation, mettre les numéro de checkbox dans la propriété Tag des CheckBox
J'ai pas su vraiment tester je n'ai pas tes documents Word
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Remplace tout le code de l'userform par
Option Explicit Dim Check As Collection Private Sub Appliquer_Click() Dim WordApp As Word.Application Dim WordDoc As Word.Document Dim i As Byte Dim e As Integer Set WordApp = CreateObject("word.application") 'ouvre une session Word WordApp.Visible = False 'Word est masqué pendant l'opération'ouvre le document Word For e = 1 To Check.Count If Check(CStr(e)) Then Set WordDoc = WordApp.Documents.Open("C:\cible\doc_Word_du_checkbox" & e & ".doc") For i = 1 To 5 'les signets du document Word sont nommés Signet1 à Signet5 ActiveDocument.Bookmarks("Signet" & i).Range.Select WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1) 'copie des cellules A1 à A5 (c'est à dire le texte des textbox) à l'emplacement des signets word Next i WordDoc.Close False ' à vérifier .. End If Next e WordApp.Quit 'ferme la session Word Set WordDoc = Nothing Set WordApp = Nothing End Sub Private Sub UserForm_Initialize() Dim Chk As Control Set Check = New Collection For Each Chk In Me.Controls If TypeOf Chk Is MSForms.CheckBox Then Check.Add Chk, CStr(Chk.Tag) End If Next Chk End Sub
Seule obligation, mettre les numéro de checkbox dans la propriété Tag des CheckBox
J'ai pas su vraiment tester je n'ai pas tes documents Word
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Ok alors là je suis impressionné, je digère pas encore toutes les commandes mais ca pourrait m etre très utile par la suite. Merci.
Le seul hic c'est que c'est toute la cible qui change à chaque fois pour une checkbox et non pas juste "checkbox xx"
ex :
"C:\cible1\doc_Word_du_checkbox1" .
"C:\cible2\doc_Word_du_checkbox2"
Pour y parvenir faudrait utiliser la recherche automatique de windows ce qui élève la difficulté (et en tout cas pour l'instant je ne m'en occupe pas).
Sinon une question bcp plus simple mais qui m'a deja fait chercher pendant plus de 2 heures :
j'ai 3 checkbox, je voudrais que 2 se décochent quand je coche la 3ème mais en "direct" sur l'UF.
Dans cet exemple les checkbox 1 et 2 sont décoché qu'après avoir cliquer sur commandbutton1 et non pas au moment ou checkbox3 est coché. Comment faire ?
Bonne apétit
Le seul hic c'est que c'est toute la cible qui change à chaque fois pour une checkbox et non pas juste "checkbox xx"
ex :
"C:\cible1\doc_Word_du_checkbox1" .
"C:\cible2\doc_Word_du_checkbox2"
Pour y parvenir faudrait utiliser la recherche automatique de windows ce qui élève la difficulté (et en tout cas pour l'instant je ne m'en occupe pas).
Sinon une question bcp plus simple mais qui m'a deja fait chercher pendant plus de 2 heures :
j'ai 3 checkbox, je voudrais que 2 se décochent quand je coche la 3ème mais en "direct" sur l'UF.
Dans cet exemple les checkbox 1 et 2 sont décoché qu'après avoir cliquer sur commandbutton1 et non pas au moment ou checkbox3 est coché. Comment faire ?
Private Sub CommandButton1_Click() If CheckBox3 = True Then CheckBox1 = False CheckBox2 = False MsgBox ("bien joué") End If If CheckBox1 = True Then MsgBox ("affiche le 1") If CheckBox2 = True Then MsgBox ("affiche le 2") End Sub
Bonne apétit
Private Sub CheckBox3_Click() If CheckBox3 Then CheckBox2 = False: CheckBox1 = False End Sub Private Sub CommandButton1_Click() If CheckBox3 = True Then MsgBox ("bien joué") Else If CheckBox1 = True Then MsgBox ("affiche le 1") If CheckBox2 = True Then MsgBox ("affiche le 2") End If End Sub
Concernant...
Le seul hic c'est que c'est toute la cible qui change à chaque fois pour une checkbox et non pas juste "checkbox xx"
Tu peu mettre les chemins complet (répertoirs etc.. dans une colonne d'une feuille quelconque, tu dis la feuille et la colonne et la 1ère cellulle renseignée et je te modifie le code précedant pour que ça fonctionne.
Par ex:
Feuil3
A1 = C:\cible1\doc_Word_du_checkbox1
A2 = C:\cible2\doc_Word_du_checkbox2
Etc..
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Le seul hic c'est que c'est toute la cible qui change à chaque fois pour une checkbox et non pas juste "checkbox xx"
Tu peu mettre les chemins complet (répertoirs etc.. dans une colonne d'une feuille quelconque, tu dis la feuille et la colonne et la 1ère cellulle renseignée et je te modifie le code précedant pour que ça fonctionne.
Par ex:
Feuil3
A1 = C:\cible1\doc_Word_du_checkbox1
A2 = C:\cible2\doc_Word_du_checkbox2
Etc..
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Ca serait vraiment chic. j essaye de te preparer ca.
En attendant comment faire en sorte que si "signet5" n'existe pas dans le document word, le programme continue sans coller la valeur copié ?
Aussi, y a t il un moyen de rassembler des lignes de code sous un "plus" comme dans l'explorateur window ?
Merci à toi
En attendant comment faire en sorte que si "signet5" n'existe pas dans le document word, le programme continue sans coller la valeur copié ?
Aussi, y a t il un moyen de rassembler des lignes de code sous un "plus" comme dans l'explorateur window ?
Merci à toi
question 1 : suffit de mettre un <On Error Resume Next>
Question 2 : pas compris
Question 2 : pas compris
Je dois rentrer chez moi et je n'ai pas de connexion internet. je retravail ca demain.
La deuxième question c'est en fait :
quand tu ouvre l'explorateur window standard, a gauche dans l'arborescence il y a des petits "+" dans un carré, quand on clique dessus ca déroule tous les sous dossiers.
est il possible de faire la même chose au sein d'un texte VBA ? Regrouper plusieur lignes sous une pour éclaircir un peu.
A demain
La deuxième question c'est en fait :
quand tu ouvre l'explorateur window standard, a gauche dans l'arborescence il y a des petits "+" dans un carré, quand on clique dessus ca déroule tous les sous dossiers.
est il possible de faire la même chose au sein d'un texte VBA ? Regrouper plusieur lignes sous une pour éclaircir un peu.
A demain
Désolé mais il n'y avait plus de feedback sur les réponses.. (CCM qui rame depuis...)
Et je ne vais pas faire toute ron appli... !!
1/ on rentre les infos dans les 5 textbox (remarque : il s'agit de la date du jour dans le textbox4, possible de remplir en automatique? De laisser encore la saisie manuelle si l'on veut rentrer la date de demain?)
Mettre dans
Tu pourras toujours changer la date.
2°) Il n'y a RIEN dans l'UF tu n'a même pas commencer, voir les liens ou code donner pour déjà faire la collection de tes checkbox, sinon ça va devenir intenable..
La suite.. je verrais quand tu aurras avancé.
Et je ne vais pas faire toute ron appli... !!
1/ on rentre les infos dans les 5 textbox (remarque : il s'agit de la date du jour dans le textbox4, possible de remplir en automatique? De laisser encore la saisie manuelle si l'on veut rentrer la date de demain?)
Mettre dans
Private Sub UserForm_Initialize() TextBox4 = Date End Sub
Tu pourras toujours changer la date.
2°) Il n'y a RIEN dans l'UF tu n'a même pas commencer, voir les liens ou code donner pour déjà faire la collection de tes checkbox, sinon ça va devenir intenable..
La suite.. je verrais quand tu aurras avancé.
Wouaaw, mais c'est pas là que tu doit mettre tes codes. :(
Le plus simple, tu va dans l'éditeur (Alt+F11)
tu affiche l'UserForm (celui où tu a mis tes textBox et boutons.
tu double clic sur un bouton et tu tombe sur le module où tu dois mettre les macro.
Le plus simple, tu va dans l'éditeur (Alt+F11)
tu affiche l'UserForm (celui où tu a mis tes textBox et boutons.
tu double clic sur un bouton et tu tombe sur le module où tu dois mettre les macro.
En fait normalement le code je le place dans l'usf en faisant clic droit puis code de l'usf dans l'explorateur de projet. Seulement là je voulais pas y mettre des chose inutiles c'est pour ça que je t'ai envoyé un usf vierge et mis le code en feuille 2.
Hormis ce quiproquo le code en question marche très bien mais c'est vrai qu'il devient intenable. Surtout quand on me demande s'il sera facile de modifier pour des gens qui n'ont jamais vu de vba excel le nombre de checkbox.
c'est pour ca que j'ai été séduit par ta colonne de cible dans une feuille et la collection.
Le problème c'est que j'ai beau étudier tes anciens posts et tes astuces j'ai encore du mal avec la collection d'objet checkbox. je continu de potasser quoi.
A+
Hormis ce quiproquo le code en question marche très bien mais c'est vrai qu'il devient intenable. Surtout quand on me demande s'il sera facile de modifier pour des gens qui n'ont jamais vu de vba excel le nombre de checkbox.
c'est pour ca que j'ai été séduit par ta colonne de cible dans une feuille et la collection.
Le problème c'est que j'ai beau étudier tes anciens posts et tes astuces j'ai encore du mal avec la collection d'objet checkbox. je continu de potasser quoi.
A+
en reprenant le code de cette réponse, le UF_Initialize, si tu exécute ce code c'est comme si tu n'avais qu'un seul checkbox que tu peu tester sauf qu'il a un index, en d'autre terme tu aurais le nom des CheckBox qui serait..
Chk(1)
Chk(2)
Chk(3)
etc..
Et qu'à partir de là tu peu tester tout tes checkbox avec 3
lignes
Oublie pas qu'il faut mettre les numéros dans les propriétés Tag des CheckBox, le nom n'a pas d'importance
Chk(1)
Chk(2)
Chk(3)
etc..
Et qu'à partir de là tu peu tester tout tes checkbox avec 3
lignes
For i = 1 to Unbound(Chk) 'Le dernier checkBox If Chk(i).Value = True then 'tu exécute ce que tu veux comme si c'était le checkBox que tu teste End if Next i
Oublie pas qu'il faut mettre les numéros dans les propriétés Tag des CheckBox, le nom n'a pas d'importance
La vrai gène c'est que je traite et des fichiers word et des fichierx excel. Suivant le type de fichier soit je pilote word soit je pilote excel.
il faudrait 2 paragraphes bien distinct qui fait l'un ou l'autre. Puis en fonction de la checkbox coché ( ie en fonction du type de ficher qui lui est attaché) le traitement se fait en paragraphe1 ou 2.
il faudrait 2 paragraphes bien distinct qui fait l'un ou l'autre. Puis en fonction de la checkbox coché ( ie en fonction du type de ficher qui lui est attaché) le traitement se fait en paragraphe1 ou 2.
Salut Lermitte 222,
Jvoulais te prévenir que je serais un peu moin présent à partir de maintenant étant donn" que j'ai finis mon stage. Je continu le pgm plus pour le désir d'avoir une chose bien terminé que par obligation seulement je serais un peu moin réactif.
Merci bcp pour l'aide que tu m'as donné. Porte toi bien !
Jvoulais te prévenir que je serais un peu moin présent à partir de maintenant étant donn" que j'ai finis mon stage. Je continu le pgm plus pour le désir d'avoir une chose bien terminé que par obligation seulement je serais un peu moin réactif.
Merci bcp pour l'aide que tu m'as donné. Porte toi bien !
Je continue donc, mon stage s'arrête le 31 juillet et j'aurais bien aimé partir en ayant modifié ça.
A+
Tout à fait d'accord avec Mike
Pour apprendre:
https://silkyroad.developpez.com/VBA/UserForm/
https://silkyroad.developpez.com/VBA/ControlesUserForm/