IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Ajouter ligne dans tableau / Ajouter checkbox & signet [À faire]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Ajouter ligne dans tableau / Ajouter checkbox & signet
    Bonjour à tous. Voici les informations de mon projet. Il est en word 2002. J'ai un tableau 2 ligne X 4 colonnes. Ce projet est un journal de bord multi-utilisateurs. À son ouverture, une macro identifie l'utilisateur avec le login windows. L'utilisateur peut ajouter une note avec la macro que je tente d'y installer. J'ai besoin que la note la plus récente soit toujours en haut (apres la ligne des titres du tableau). Au départ, le document est protégé (formulaire) avec comme mot de passe : 12345.

    Ma première question est la suivante : Par macro affecté a un menu (je sais comment affecter une macro a un menu), Quel code dois-je utiliser pour ajouter une ligne au tableau? La ligne doit s'ajouter en deuxième (après la première du haut). Donc si j'exécute la macro plusieurs fois, y'a toujours une ligne qui s'ajoute avant la première.

    Ma deuxième question est la suivante : Dans cette nouvelle ligne q'on vient d'ajouter, comment faire pour ajouter une checkbox (J'aimerais mieux un radio bouton mais je crois pas que ce soit possible en VBA, je suis dans l'impossibilité de mettre à jour word, je ne suis pas un administrateur réseau) dans la première colone ainsi qu'un signet dans chacune des trois autres colone? J'ai besoin que la checkbox ai un signet d'attribué, exemple C1-000001. Signet : C2-000001, C3-000001 et C4-000001. Les signets de chaque ligne doivent corespondre en numéro. A chaque nouvelle ligne ajoutée, les signets doivent s'incrémenter de facon à pouvoir exécuter une autre macro qui permet à l'utilisateur de supprimer une note ajoutée, en fait c'est la ligne qu'on supprime... Si y'a un moyen plus facile pour l'utilisateur que de sélectionner une checkbox pour ensuite supprimer une note, je suis ben ouvert aux commentaires. Seul l'auteur de la note (colone 4) pourra supprimer la note.

    Ma troisième qustion est la suivante : Comment faire pour connaitre le signet d'une checkbox sélectionnée par l'utilisateur.

    Sur ce, un gros merci de votre temps.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Première question : Regarde , c'est pour les colonnes mais pour les lignes, c'est pareil, mais avec Rows

    Bon, comme ce n'est pas évident... inspiré de l'aide en ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set WordDoc = ActiveDocument
       With WordDoc.Tables(WordDoc.Tables.Count)
            .Select
            If Selection.Information(wdWithInTable) = True Then
                Selection.Rows.Add BeforeRow:=Selection.Rows(1)
            End If
        End With
    Pour tes autres questions "Wait !"

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour la deuxième question (ajouter un checkbox sur la seconde ligne, première colonne du tableau)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim WdDoc As Document
    Dim LaTable As Table
    Set WdDoc = ActiveDocument
    Set LaTable = WdDoc.Tables(WdDoc.Tables.Count)
        LaTable.Select
        With LaTable
            .Cell(2, 1).Select
            Selection.InlineShapes.AddOLEControl ClassType:="Forms.CheckBox.1"
        End With
    Set WdDoc = Nothing
    Set LaTable = Nothing
    Pour la troisième question, "Wait (Now + TimeValue("0:01:00"))"

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon, ça a été plus long mais bon...
    Troisième question, donc !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Sub PlacerUnCheckBoxLigne2Colonne1ChangerSonEtatEtLireLeNouveau()
    Dim WdDoc As Document
    Dim LaTable As Table
    Dim Obj1 As Object
    Set WdDoc = ActiveDocument
    Set LaTable = WdDoc.Tables(WdDoc.Tables.Count)
        LaTable.Select
        'Ajouter un checkbox dans la cellule ligne 2 colonne 1
        With LaTable
            .Cell(2, 1).Select
            Set Obj1 = Selection.InlineShapes.AddOLEControl(ClassType:="Forms.CheckBox.1")
     
            'Ajouter un signet qui ne sert à rien sur le checkbox
            With Selection
                .Bookmarks.Add Range:=Selection.Range, Name:="Atchum"
            End With
        End With
     
        'modifier l'état et le Caption du checkbox
        With Obj1.OLEFormat.Object
            .Value = True
            .Caption = "Ci Oki"
        End With
     
        'lire l'état du checkbox et son nouveau caption
        With Obj1.OLEFormat.Object
            MsgBox .Caption & ":=" & .Value
        End With
        Set WdDoc = Nothing
        Set LaTable = Nothing
        Set Obj1 = Nothing
    End Sub
    Je te signale que je n'ai jamais utilisé VBA pour tripoter les tableaux dans Word.
    Tout ce que je t'ai mis provient de l'aide en ligne
    J'ai eu un peu de mal, c'est vrai...
    Ce qui ne m'empêche pas de te souhaiter bonne suite
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut mici
    Un gros merci à toi. Je vais tout tester ca et je t'en donne des nouvelles.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Retour sur ton enseignement.
    Voici mon code fonctionnel grâce à toi!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub BtnAjouterNote_Click()
     
        ' Vérifie si l'utilisateur a entré de l'information dans la tbx.
        If TbxNote.Text = "" Then
            MsgBox "Veuillez inscrire une note", vbOKOnly, "Erreur"
            TbxNote.SetFocus
            BtnAjouterNote.Enabled = False
            Me.Hide
            GoTo Line1:
        Else
            ' Enlève la protection du document.
            ThisDocument.Unprotect Password:="tireur"
            ' De l'information a été ajouté, donc on peut ajouter une ligne au tableau.
            ThisDocument.Tables(1).Rows(2).Select
            Selection.Rows.Add
     
                ' Ajout d'information dans les colonnes.
     
                ' Colonne #1, checkbox.
                Dim BoiteAjoutee As Object
                ThisDocument.Tables(1).Rows(2).Cells(1).Select
                Set BoiteAjoutee = Selection.InlineShapes.AddOLEControl(ClassType:="Forms.CheckBox.1")
                With BoiteAjoutee.OLEFormat.Object
                    .Enabled = False
                    .Caption = ""
                    .Height = 10
                    .Width = 10
                End With
     
                ' Colonne #2, Date.
                ThisDocument.Tables(1).Rows(2).Cells(2).Select
                Selection.Text = Format(Date, "yyyy-mm-dd")
     
                ' Colonne #3, Note.
                ThisDocument.Tables(1).Rows(2).Cells(3).Select
                Selection.Text = TbxNote.Text
     
                ' Colonne #4, Nom de l'utilisateur.
                ' Appel la fonction d'identification de l'usager.
                Call fOSUserName
     
        End If
     
        ' Confirmation.
        MsgBox "Note ajoutée avec succès", vbOKOnly, "Confirmation"
        TbxNote.Text = ""
        TbxNote.SetFocus
        BtnAjouterNote.Enabled = False
        Me.Hide
        ThisDocument.Protect wdAllowOnlyFormFields, NoReset, Password:="tireur"
     
    Line1:
     
    End Sub
    Code pour avoir le logonID :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
        "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
     
    Function fOSUserName() As String
     
    Dim IngLen As Long, IngX As Long
    Dim strUserName As String
        strUserName = String$(254, 0)
        IngLen = 255
        Usager = "Usager inconnu"
        IngX = apiGetUserName(strUserName, IngLen)
     
        If (IngX > 0) Then
            fOSUserName = Left$(strUserName, IngLen - 1)
            If fOSUserName = "LAPY01" Then
                Usager = "Programmeur débutant en devenir"
            Else
            End If
        Else
        End If
     
        ThisDocument.Tables(1).Rows(2).Cells(4).Select
        Selection.Text = Usager
     
    End Function
    Sur cela. Un gros merci!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout lignes dans tableau
    Par yo_haha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/07/2011, 21h41
  2. Réponses: 9
    Dernier message: 14/04/2009, 16h20
  3. Réponses: 5
    Dernier message: 30/09/2008, 03h14
  4. [VBA - W] ajout ligne dans un tableau
    Par perophron dans le forum VBA Word
    Réponses: 2
    Dernier message: 23/05/2007, 10h27
  5. ajout ligne dans tableau sous IE
    Par n00noors dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo