Excel, boite de dialogue, fichiers&macro

Résolu
Ipalgo Messages postés 53 Statut Membre -  
Ipalgo Messages postés 53 Statut Membre -
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 !

19 réponses

Résumé de la discussion

La problématique consiste à créer une interface Excel (UserForm) permettant d’entrer référence produit, nom client, date et référence interne, puis d’exploiter des cases à cocher pour modifier des feuilles et imprimer un modèle.
Plusieurs approches suggèrent d’utiliser VBA avec des contrôles textbox, combobox et checkbox, et d’automatiser des enregistrements entre Excel et Word selon les cases cochées.
Des exemples évoquent la gestion de Word via WordApp et WordDoc, la libération de mémoire (WordApp.Quit, Set WordApp = Nothing) et la difficulté d’adapter le flux lorsque chaque checkbox cible un fichier distinct.
En pratique, certains abordent l’usage de bibliothèques Microsoft Word 12.0 Object Library et l’idée d’imprimer à partir de modèles Excel (.xlt) ou de diriger le flux vers des destinations variées.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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.
    1
    1. Ipalgo Messages postés 53 Statut Membre
       
      C'est exact, mais je rebondis sur ta citation de profil avec la graine du savoir qui est magnifique et je peux dire modestement que je suis persévérant.
      Je continue donc, mon stage s'arrête le 31 juillet et j'aurais bien aimé partir en ayant modifié ça.

      A+
      0
    2. Ipalgo Messages postés 53 Statut Membre
       
      Merci bcp pour les liens, je travail dessus.
      0
  2. Ipalgo Messages postés 53 Statut Membre
     
    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.

    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.Application
    n'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.
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      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")
      
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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

           '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
      0
  3. Ipalgo Messages postés 53 Statut Membre
     
    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
    Dim WordApp As Word.Application
    par 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.
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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..
    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)
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,

      Ci joint vieille maquette faite sous office 2000 tu as les références de cochées (dans outils-reférences de VBE)dans la feuille
      http://www.cijoint.fr/cjlink.php?file=cj201007/cijP7CCrr2.zip

      je regarde pour la 2° bibliothèque
      0
    2. Ipalgo Messages postés 53 Statut Membre
       
      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
      WordDoc.Bookmarks("RappEss").Range.Text = copie1
      )

      Je veux pas perdre tout mon crédit alors je vais chercher.
      +
      0
    3. Ipalgo Messages postés 53 Statut Membre
       
      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
      .Selection.TypeText (insert1)


      Sinon à quoi sert les points ajouté a chaque début de ligne ?
      ex :
      .Visible = True
      .ActiveDocument.Save
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
    5. Ipalgo Messages postés 53 Statut Membre
       
      Salut

      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 = Nothing
      et 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 !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Re,
    Essaye d'envoyer un MP à argixu, voir s'il à encore l'exemple ou qu'il puisse te le réexpliquer.
    A+
    0
  7. Ipalgo Messages postés 53 Statut Membre
     
    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 :

    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 True
    est surligné.

    Inspiration divine ?..
    0
  8. Ipalgo Messages postés 53 Statut Membre
     
    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 :
    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
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    essaies plutôt
    Dim WordApp As object

    puisque un peu plus loin tu as

    Set WordApp = CreateObject("word.application")

    0
    1. Ipalgo Messages postés 53 Statut Membre
       
      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 :
      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.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    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+
    0
    1. Ipalgo Messages postés 53 Statut Membre
       
      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 ?
       For i = 1 To 5
                  ActiveDocument.Bookmarks("Signet" & i).Range.Select
                  WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1)
              Next i
      
      0
  11. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Tu veux raccourcir ?
    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)
    0
    1. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Je me demade bien à quoi sert ce code, tu modifie tes documents Word et ensuite tu les ferme sans sauver ?
      0
    2. Ipalgo Messages postés 53 Statut Membre
       
      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 ?
      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
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut,
      Essaye ceci, dans l'évènement click du checkbox correspondant (ici le 3) :
      Private Sub CheckBox3_Click() 
      If CheckBox3 = True Then 
          CheckBox1 = False 
          CheckBox2 = False 
          MsgBox ("bien joué") 
      End If 
      End Sub


      ps : bon appétit
      0
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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

    0
  13. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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)
    0
    1. Ipalgo Messages postés 53 Statut Membre
       
      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
      0
  14. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    question 1 : suffit de mettre un <On Error Resume Next>
    Question 2 : pas compris
    0
    1. Ipalgo Messages postés 53 Statut Membre
       
      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
      0
    2. Ipalgo Messages postés 53 Statut Membre
       
      Je suis de retour,

      je t'ai tout préparé dans un fichier excel que tu trouveras ici : http://www.cijoint.fr/cjlink.php?file=cj201007/cij5et7Yv2.xls

      Je reste à l'écoute.
      A+
      0
    3. Ipalgo Messages postés 53 Statut Membre
       
      Juste un petit up pour savoir si ta bien recu le message.
      0
    4. Ipalgo Messages postés 53 Statut Membre
       
      Aphone ?
      0
  15. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    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é.
    0
    1. Ipalgo Messages postés 53 Statut Membre
       
      Ce que j'ai déjà fait est placé en feuille 2.
      0
  16. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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.
    0
  17. Ipalgo Messages postés 53 Statut Membre
     
    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+
    0
  18. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    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
    0
  19. Ipalgo Messages postés 53 Statut Membre
     
    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.
    0
  20. Ipalgo Messages postés 53 Statut Membre
     
    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 !
    0