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 06/02/2008, 10h31   #1
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 85
Points : 39
Points : 39
Par défaut Insertion vbTab dans un tableau

Bonjour,

Je souhaite inserer une chaine de caractère contenant des tabluations à l'interieur des cellules d'un tableau, mais je n'y arrive pas:
Le resultat est qu'au lieu d'inserer une tabulation à l'interieur de ma cellule, la suite du texte est inserée dans la cellule suivante.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "|RC|*|/RC|"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
Do
    DoEvents
    Selection.Find.Execute
    If Not Selection.Find.Found Then Exit Sub
    Selection = Replace(Selection, ", ", ",", , , vbTextCompare)
    Selection = Replace(Selection, ",", "," & vbTab, , , vbTextCompare)
Loop

Note: Ce problème est bien spécifique au tableau, en dehors, ce code marche trés bien

Note 2: J'ai essayé aussi en précédant vbTab de "^t" (j'avais vu un bout de code qui ressemblait à ça, mais sa marche pas non plus
ataya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 22h36   #2
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Par défaut Tab dans les tableaux et les recherches

Salut,

En effet, vbTab est le caractère utilisé en VBA pour insérer une tabulation (donc un tableau) mais "^t" est la chaîne pour une recherche de tabulation.

Donc il te faut utiliser en même temps les 2. Mais comme ton code est complexe. Simplifie-le et tu y verras déjà plus clair mais je ne peux plus t'aider sans avoir les code de "replace" mais je pense qu'un truc comme ça devrait marcher

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
    '/ vas au début du document
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "|RC|*|/RC|"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute
    While Selection.Find.Found
        ' T'as trouve donc tu remplaces dans ce que tu cherches
        With Selection.Find
            .Text = ", "
            .Replacement.Text = ", ^t"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
 
        With Selection.Find
            .Text = "|RC|*|/RC|"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute
    Wend
Tu peux simplifier mais pour une question de compréhension j'ai garder tous les paramètres
A+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 13h19   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Je n'ai pas réutilisé le code que tu avais donné, mais j'en ai utilisé un autre pour faire des essais.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Sub CellTab()
ActiveDocument.Tables(1).Select
With Selection.Find
    .Forward = True
    .ClearFormatting
    .MatchWholeWord = True
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Oli"
End With
Selection.TypeText vbTab
End Sub
Tu fais un tableau, tu inséres dans une cellule Oli et tu essayes.
Chez moi, ça passe.

Le principe, c'est de faire une sélection de la chaîne trouvée, et de la remplacer par du texte.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2008, 13h34   #4
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 85
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 85
Points : 39
Points : 39
mea culpa !

Effectivement la solution présentée est juste.

Mon problème venait du fait que les tableaux sont construits dynamiquement, et que les séparateurs de cellules sont ... des tabulations !
ataya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2008, 13h38   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Normalement, l'utilisation de Tab dans tous les tableaux correspond au changement de cellule et si il n'y a plus de cellule, une nouvelle ligne est ajoutée.
Les fait d'insérer le Texte vtab correspond à la combinaison Ctrl + Tab.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement 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 18h43.


 
 
 
 
Partenaires

Hébergement Web