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 01/12/2006, 16h11   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 1
Points : 0
Points : 0
Par défaut Manipulation d'un tableau sous Word avec vba

Bonjour,

J'ai un petit problème dont je ne trouve pas la solution et n'étant pas du tout informaticien, j'ai un peu de mal...: j'ai un tableau initial de 12 colonnes et x lignes. Ce qui m'intéresse, c'est de réarranger un peu mon tableau ce que j'arrive à faire avec le code suivant et de comparer les valeurs de la colonne 11 qui peuvent prendre la valeur de 1, 2, 3 ou 4 afin de connaître combien de ligne ont la "valeur" 1, 2, 3 ou 4 (les valeurs sont successives genre 5 lignes 1 puis 6 lignes 2 puis 3 lignes 3 puis 0 lignes 4).

col A col B col C col D col E col F col G col H col I col J col K col L
Chamb 14,98 15,0 10,00 20,00 1 56 160 661 0 1 1300
Chamb 14,98 15,0 10,00 20,00 1 56 160 661 0 1 1300
Chamb 14,98 15,0 10,00 20,00 1 56 160 661 0 2 1300
Chamb 14,98 15,0 10,00 20,00 1 56 160 661 0 2 1300
Chamb 14,98 15,0 10,00 20,00 1 56 160 661 0 2 1300

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
55
Dim compt As Long
Dim iti1 As Integer, iti2 As Integer, iti3 As Integer, iti4 As Integer
Dim A As String
 
A = Chr(49)
 
iti1 = 0
iti2 = 0
iti3 = 0
iti4 = 0
 
If Selection.Information(wdWithInTable) Then
 
For compt = 2 To Selection.Tables(1).Rows.Count
 
If Left(Selection.Tables(1).Cell(compt, 11).Range.Text, 1) = A & Null Then
iti1 = iti1 + 1
Else
    If Left(Selection.Tables(1).Cell(compt, 11).Range.Text, 1) = Chr(50) Then
    iti2 = iti2 + 1
    Else
        If Left(Selection.Tables(1).Cell(compt, 11).Range.Text, 1) = Chr(51) Then
        iti3 = iti3 + 1
        Else
            If Left(Selection.Tables(1).Cell(compt, 11).Range.Text, 1) = Chr(52) Then
            iti4 = iti4 + 1
            Else
            End If
        End If
    End If
End If
 
Next compt
 
End If
 
With Selection.Tables(1)
    .Columns.Add BeforeColumn:=Selection.Tables(1).Columns(1)
    .Cell(1, 4).Delete shiftcells:=wdDeleteCellsEntireColumn
    .Cell(1, 4).Delete shiftcells:=wdDeleteCellsEntireColumn
    .Cell(1, 5).Delete shiftcells:=wdDeleteCellsEntireColumn
    .Columns(1).Cells(1).Range.Text = "N° pièces"
    .Cell(1, 9).Delete shiftcells:=wdDeleteCellsEntireColumn
    .Columns.Add BeforeColumn:=Selection.Tables(1).Columns(9)
 
End With
 
Selection.Tables(1).Columns(10).Select
Selection.Copy
Selection.Tables(1).Columns(9).Select
Selection.Paste
Selection.Tables(1).Columns(10).Select
Selection.Delete
Selection.Tables(1).Cell(1, 11).Delete shiftcells:=wdDeleteCellsEntireColumn
Selection.Tables(1).Columns(10).Cells(1).Range.Text = "Remarques"
Maintenant je me trouve avec un tableau de 10 colonnes et toujours autant de ligne et j'aimerai à partir de là créer autant de tableau qu'il y a des valeurs différentes (1, 2, 3 ou 4 et je connais le nombre de ligne ayant cette valeur grace à mes compteurs iti1, iti2, iti3 et iti4) et c'est là que je bloque ! Pouvez vous m'aider ?
Françoise Sagan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2006, 13h54   #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
Regarde dans la FAQ http://vb.developpez.com/faqvba/?rec...RD+%26+TABLEAU
Tu as de nombreuses réponses et il m'étonnerait bien que tu n'aies pas ce que tu cherches
Si tu as tjrs un pb, tu dis
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h52.


 
 
 
 
Partenaires

Hébergement Web