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 :

Fenêtre permettant de copier/coller les lignes d'un tableau vers un autre tableau


Sujet :

VBA Word

  1. #21
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message

    Voilà le code pour charger les combobox dans mon userform :
    Dans un module standard :
    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
     
    Option Explicit
     
    Public MonDoc As Document
    Public TableSource As Table, TableCible As Table
     
    Sub LancerLeUserform()
     
    Dim I As Integer
     
        Set MonDoc = ActiveDocument
        With MonDoc
             With UserForm1
                 For I = 1 To MonDoc.Tables.Count
                     .ComboBoxTableSource.AddItem MonDoc.Tables(I).Title
                     .ComboBoxTableCible.AddItem MonDoc.Tables(I).Title
                 Next I
                 .Show
             End With
     
        End With
        Set MonDoc = Nothing
     
    End Sub
    Pièce jointe 310900

    Le code dans mon Userform pour charger les étapes à partir des tables retenues :
    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
     
    Option Explicit
     
    Private Sub ComboBoxTableCible_Change()
     
    Dim CtrI As Integer
     
            Me.ComboBoxEtapesCible.Clear
     
            Set TableCible = MonDoc.Tables(TableSelectionnee(MonDoc, ComboBoxTableCible))
            With TableCible
                 For CtrI = 1 To .Rows.Count
                     Me.ComboBoxEtapesCible.AddItem Mid(.Rows(CtrI).Cells(1).Range.Text, 1, Len(.Rows(CtrI).Cells(1).Range.Text) - 2)
                 Next CtrI
     
            End With
            Set TableCible = Nothing
     
    End Sub
     
    Private Sub ComboBoxTableSource_Change()
     
    Dim CtrI As Integer
     
            Me.ComboBoxEtapesSource.Clear
     
            Set TableSource = MonDoc.Tables(TableSelectionnee(MonDoc, ComboBoxTableSource))
            With TableSource
                 For CtrI = 1 To .Rows.Count
                     Me.ComboBoxEtapesSource.AddItem Mid(.Rows(CtrI).Cells(1).Range.Text, 1, Len(.Rows(CtrI).Cells(1).Range.Text) - 2)
                 Next CtrI
     
            End With
            Set TableSource = Nothing
     
    End Sub

  2. #22
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci, je vais tester cela de suite.

    {...}

    Super le remplissage des combobox se fait de façon dynamique. C'est génial !

    Je devrais réussir a finir la partie copier/coller.

    Merci bcp.

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Je devrais réussir a finir la partie copier/coller.
    Juste pour vous mettre sur les rails :
    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
     
    Sub CopierLigneTableau1DansTableau2(ByVal TableSource As Table, ByVal EtapeSource As String, ByVal TableCible As Table, ByVal EtapeCible As String)
     
    Dim I As Integer, J As Integer, K As Integer, LigneSource As Integer, NbColonnes As Integer
    Dim MaChaine As String
     
        With TableSource
             For I = 1 To .Rows.Count
                 If InStr(1, .Rows(I).Cells(1).Range.Text, EtapeSource, vbTextCompare) > 0 Then
                    LigneSource = I
                    Exit For
                 End If
             Next I
        End With
     
        With TableCible
             NbColonnes = .Columns.Count
             For I = 1 To .Rows.Count
                 If InStr(1, .Rows(I).Cells(1).Range.Text, EtapeCible, vbTextCompare) > 0 Then
                    For J = 2 To NbColonnes
                        MaChaine = ""
                         With .Rows(I).Cells(J).Range
                              .Text = TableSource.Rows(LigneSource).Cells(J).Range.Text
                               For K = 1 To .Characters.Count
                                   Select Case Mid(.Text, K, 1)
                                         Case Chr(10), Chr(13)
     
                                         Case Else
                                              MaChaine = MaChaine & Mid(.Text, K, 1)
                                   End Select
                               Next K
                              .Text = MaChaine
                         End With
                    Next J
                 End If
             Next I
        End With
     
    End Sub
     
    Private Sub BoutonValider_Click()
     
         CopierLigneTableau1DansTableau2 TableSource, Me.ComboBoxEtapesSource, TableCible, Me.ComboBoxEtapesCible
     
    End Sub
    Il faut également neutraliser les Set TableSource = Nothing et Set TableCible = Nothing des événements des Combobox.
    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
     
    Private Sub ComboBoxTableCible_Change()
     
    Dim CtrI As Integer
     
            Me.ComboBoxEtapesCible.Clear
     
            Set TableCible = MonDoc.Tables(TableSelectionnee(MonDoc, ComboBoxTableCible))
            With TableCible
                 For CtrI = 1 To .Rows.Count
                     Me.ComboBoxEtapesCible.AddItem Mid(.Rows(CtrI).Cells(1).Range.Text, 1, Len(.Rows(CtrI).Cells(1).Range.Text) - 2)
                 Next CtrI
     
            End With
           ' Set TableCible = Nothing
     
    End Sub
     
    Private Sub ComboBoxTableSource_Change()
     
    Dim CtrI As Integer
     
            Me.ComboBoxEtapesSource.Clear
     
            Set TableSource = MonDoc.Tables(TableSelectionnee(MonDoc, ComboBoxTableSource))
            With TableSource
                 For CtrI = 1 To .Rows.Count
                     Me.ComboBoxEtapesSource.AddItem Mid(.Rows(CtrI).Cells(1).Range.Text, 1, Len(.Rows(CtrI).Cells(1).Range.Text) - 2)
                 Next CtrI
     
            End With
           ' Set TableSource = Nothing
     
    End Sub
    Et les remettre en quittant le Userform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub BoutonRetour_Click()
     
            Set TableCible = Nothing
            Set TableSource = Nothing
            Unload UserForm1
     
    End Sub

  4. #24
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Juste pour vous mettre sur les rails.
    Merci beaucoup. Voila un code qui devrait m'apprendre bcp sur le vba.
    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Copier-coller les lignes selectionnées en conservant la mise en forme.
    Par syd0112 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/03/2017, 16h47
  2. [XL-2007] Réaliser une recherche dans une colonne et copier coller les lignes
    Par Georges50 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/11/2013, 15h39
  3. Outil VBA sur ArcGis : Copier/coller les lignes dans une table attributaire
    Par Alexiis dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 26/09/2013, 16h15
  4. copier coller toutes les lignes d'un onglet vers un autre
    Par lili3183 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/11/2012, 18h31
  5. [XL-MAC 2004] copier/coller les données d'une période vers autre feuille
    Par Wawa07 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/05/2011, 12h10

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