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 12/06/2007, 18h17   #1
Invité régulier
 
Inscription : juin 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 17
Points : 6
Points : 6
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.
TIREUR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 15h51   #2
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
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 :
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 !"
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 16h07   #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
Pour la deuxième question (ajouter un checkbox sur la seconde ligne, première colonne du tableau)
Code :
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"))"
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 17h01   #4
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
Bon, ça a été plus long mais bon...
Troisième question, donc !
Code :
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 17h05   #5
Invité régulier
 
Inscription : juin 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 17
Points : 6
Points : 6
Par défaut mici

Un gros merci à toi. Je vais tout tester ca et je t'en donne des nouvelles.
TIREUR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2007, 00h45   #6
Invité régulier
 
Inscription : juin 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 17
Points : 6
Points : 6
Par défaut Retour sur ton enseignement.

Voici mon code fonctionnel grâce à toi!!

Code :
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 :
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!!!
TIREUR 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 20h21.


 
 
 
 
Partenaires

Hébergement Web