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

Macros et VBA Excel Discussion :

Nombre stocké sous forme de texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut Nombre stocké sous forme de texte
    Bonjour,

    Lorsque je colle les données d'un tableau dans un autre tableau avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    f2.Range(TS_2 & "[[Ville]:[N° Offre]]").Copy
            f1.Range(TS_1).Cells(Der_lign_TS_1, (f1.Range(TS_1 & "[Ville]").Column)).PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False ' Vider le presse-papiers
    Les nombres sont stockés sous forme de texte

    Ensuite, après le collage, je convertis la colonne Cmde avec ce code :

    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
     
    Sub Convertir_Cmde_En_Nombre()
    Dim dataRange As Range
    Dim dataArray As Variant
    Dim i As Long
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        Set dataRange = ThisWorkbook.Sheets("Suivi").ListObjects("TS_Suivi").ListColumns("Cmde").DataBodyRange
        dataArray = dataRange.Value ' Mettre les valeurs de la plage dans un tableau à deux dimensions
        'Convertir les valeurs de texte en nombres dans le tableau
        For i = 1 To UBound(dataArray, 1)
            If IsNumeric(dataArray(i, 1)) Then
                dataArray(i, 1) = CDbl(dataArray(i, 1))
            End If
        Next i
        dataRange.Value = dataArray 'Réécrire les valeurs modifiées dans la plage
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End Sub
    Je trouve cette situation un peu compliquée, et vous ?

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Philippe,
    Personnellement et pour éviter les problèmes si les colonnes de la cible ne sont pas dans le même ordre que la source, j'effectue mes copies colonne par colonne et je n'ai pas de problème de format.

    Voici le code de la fonction que j'utilise

    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
    Function CopyTable(oTableSource As ListObject, _
                       oTableTarget As ListObject, _
                       Labels As String, _
                       Optional ClearBefore As Boolean)
      ' Copie la table source à la suite de la table cible
      '   Si ClearBefore est à True, les données sont supprimées de la cible avant copie
      ' Philippe Tulliez https://magicoffice.be
      ' Version 1.1
      ' Arguments
      '  oTableSource   Table source
      '  oTableTarget   Table cible
      '  Labels         Nom des colonnes à copier séparées par ;
      '  [ClearBefore]  True si on veut supprimer les données avt copie
      '
      Dim r As Range
      Dim c As Range
      Dim t As Variant
      Dim e As Variant
      Dim f As Boolean
      Dim n As Long
      t = Split(Labels, ";")
      With oTableTarget
        If ClearBefore And Not .DataBodyRange Is Nothing Then
          .AutoFilter.ShowAllData      ' Supprime les filtres
          .DataBodyRange.Delete        ' Supprime les données de la cible
        End If
        f = .ShowTotals                ' Copie la propriété ShowTotals pour la restituer en fin de traitement
        .ShowTotals = False            ' Cache la ligne total
        n = .ListRows.Count            ' Nombre de lignes
        If n = 0 Then .ListRows.Add    ' Crée la premmière ligne
        n = n + 1                      ' Incrémente la ligne suivante
        ' Copie les colonnes
        For e = LBound(t) To UBound(t)
          Set r = oTableSource.ListColumns(t(e)).DataBodyRange
          r.Copy                       ' Copie la colonne source
          Set c = .ListColumns(t(e)).DataBodyRange.Cells(n, 1)
          c.PasteSpecial xlPasteValues ' Colle les données copiées (uniquement les valeurs)
        Next
      .ShowTotals = True               ' Remet la propiété de l'affichage de la colonne
      End With
      ' Fin de procédure
      Set r = Nothing: Set c = Nothing
    End Function
    Exemple d'une procédure qui l'invoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub T()
      Application.ScreenUpdating = False
      CopyTable Range("t_Data").ListObject, Range("t_Target").ListObject, "Nom;Prénom;Service;Sexe;DateNaiss;Contrat;Statut;Salaire"
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 118
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 118
    Points : 1 641
    Points
    1 641
    Par défaut
    Hello,

    Et si tu passes par un tableau 2D ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Data() As Variant
    Data = f2.Range(TS_2 & "[[Ville]:[N° Offre]]").Value
    f1.Range(TS_1).Cells(Der_lign_TS_1, (f1.Range(TS_1 & "[Ville]").Column)).Value = Data
    (Attention, la taille de plages source et destination doivent correspondrent).

  4. #4
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Bonjour,
    Pour manipuler les tableaux structurés j'utilise les fonctions génériques qui sont dans cette documentation : https://laurent-ott.developpez.com/t...aux-Structures
    Un fichier joint qui contient ces fonctions est à télécharger.

    Parmi ces fonctions, il y en a une pour copier une colonne d'un tableau à un autre en conservant le format numérique.
    S'il y a plusieurs colonnes à copier il suffit de boucler sur la liste des colonnes (si c'est tout le tableau une fonction le fait plus simplement).
    Par exemple si deux tableaux ont les mêmes noms d'en-tête et qu'il faille copier du tableau source "TS_Eleves" les colonnes "Nom Famille", "Prénom", "Note" dans le tableau destination "TS_Clone" cela donne :

    Code VBA : 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
    '------------------------------------------------------------------------------------------------------
    ' Toutes les informations sur les fonctions sont dans le tutoriel:
    ' https://laurent-ott.developpez.com/tutoriels/Tableaux-Structures
    '------------------------------------------------------------------------------------------------------
    ' Références à installer :
    ' ~~~~~~~~~~~~~~~~~~~~~~~~
    ' Microsoft Office 16.0 Object Library
    ' Microsoft Forms 2.0 Object Library
    '------------------------------------------------------------------------------------------------------
    Option Explicit
     
    '------------------------------------------------------------------------------------------------------
    Sub exemple()
    '------------------------------------------------------------------------------------------------------
     
    ' Déclaration des variables:
    Dim TS_S As Range
    Dim TS_D As Range
    Dim ListeColonne As Variant
    Dim i As Integer
     
    ' Initialisation des tableaux sources et destination, inutile de préciser la feuille
    ' si l'on est dans le même classeur ni que c'est un objet ListObject:
    Set TS_S = Range("TS_Eleves") ' Tableau Source.
    Set TS_D = Range("TS_Clone")  ' Tableau Destination.
     
    ' Efface les filtres du tableau source s'il faut reprendre toutes les lignes:
    Call TS_Filtres_Effacer(TS_S)
     
    ' Définition des colonnes à copier:
    ListeColonne = Array("Nom Famille", "Prénom", "Note")
     
    ' Boucle pour copier les colonnes sur la première ligne de la destination:
    For i = 0 To UBound(ListeColonne)
        Call TS_CopierUneColonne(TS_S, ListeColonne(i), ListeColonne(i), 1)
    Next i
     
    ' Si besoin, formater la colonne "Note" avec une précision de deux chiffres:
    Call TS_FormatColonne(TS_D, "Note", "0.00")
     
    End Sub
    '------------------------------------------------------------------------------------------------------

    Bonne continuation.

  5. #5
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Merci infiniment pour vos propositions que j'ai testées, mais les entêtes de colonnes des 2 tableaux ne sont pas identiques et je ne peux pas les modifier

    Bonne soirée

  6. #6
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Bonjour,
    Pour manipuler les tableaux structurés j'utilise les fonctions génériques qui sont dans cette documentation : https://laurent-ott.developpez.com/t...aux-Structures
    Un fichier joint qui contient ces fonctions est à télécharger.

    Parmi ces fonctions, il y en a une pour copier une colonne d'un tableau à un autre en conservant le format numérique.
    S'il y a plusieurs colonnes à copier il suffit de boucler sur la liste des colonnes (si c'est tout le tableau une fonction le fait plus simplement).
    Par exemple si deux tableaux ont les mêmes noms d'en-tête et qu'il faille copier du tableau source "TS_Eleves" les colonnes "Nom Famille", "Prénom", "Note" dans le tableau destination "TS_Clone" cela donne :

    Code VBA : 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
    '------------------------------------------------------------------------------------------------------
    ' Toutes les informations sur les fonctions sont dans le tutoriel:
    ' https://laurent-ott.developpez.com/tutoriels/Tableaux-Structures
    '------------------------------------------------------------------------------------------------------
    ' Références à installer :
    ' ~~~~~~~~~~~~~~~~~~~~~~~~
    ' Microsoft Office 16.0 Object Library
    ' Microsoft Forms 2.0 Object Library
    '------------------------------------------------------------------------------------------------------
    Option Explicit
     
    '------------------------------------------------------------------------------------------------------
    Sub exemple()
    '------------------------------------------------------------------------------------------------------
     
    ' Déclaration des variables:
    Dim TS_S As Range
    Dim TS_D As Range
    Dim ListeColonne As Variant
    Dim i As Integer
     
    ' Initialisation des tableaux sources et destination, inutile de préciser la feuille
    ' si l'on est dans le même classeur ni que c'est un objet ListObject:
    Set TS_S = Range("TS_Eleves") ' Tableau Source.
    Set TS_D = Range("TS_Clone")  ' Tableau Destination.
     
    ' Efface les filtres du tableau source s'il faut reprendre toutes les lignes:
    Call TS_Filtres_Effacer(TS_S)
     
    ' Définition des colonnes à copier:
    ListeColonne = Array("Nom Famille", "Prénom", "Note")
     
    ' Boucle pour copier les colonnes sur la première ligne de la destination:
    For i = 0 To UBound(ListeColonne)
        Call TS_CopierUneColonne(TS_S, ListeColonne(i), ListeColonne(i), 1)
    Next i
     
    ' Si besoin, formater la colonne "Note" avec une précision de deux chiffres:
    Call TS_FormatColonne(TS_D, "Note", "0.00")
     
    End Sub
    '------------------------------------------------------------------------------------------------------

    Bonne continuation.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Public Function TS_CopierUneColonne(TS_Source As Range, ByVal Colonne_Source As Variant, _
                                        TS_Dest As Range, ByVal Colonne_Dest As Variant, ByVal Ligne_Dest As Long, _
                                        Optional Méthode As XlCellType = xlCellTypeVisible) As Boolean
    '------------------------------------------------------------------------------------------------------
    'https://laurent-ott.developpez.com/tutoriels/Tableaux-Structures/#LII-F
    'Copie une colonne d'un tableau structuré dans un autre tableau structuré.
    '------------------------------------------------------------------------------------------------------
    ' TS_Source : le tableau structuré source où se trouve la colonne à copier.
    ' Colonne_Source : la colonne à copier (son nom ou son numéro).
    ' TS_Dest : le tableau structuré destination où il faut copier la colonne (la feuille doit être active).
    ' Colonne_Dest : la colonne où copier les données (son nom ou son numéro).
    ' Ligne_Dest : ligne où commencer la copie, par exemple 1 pour copier à la première ligne du tableau,
    '              ou 0 pour la dernière ligne du tableau.
    ' Méthode : énumération XlCellType (https://learn.microsoft.com/fr-fr/office/vba/api/excel.xlcelltype).
    '           par défaut xlCellTypeVisible pour les cellules visibles uniquement.
    '------------------------------------------------------------------------------------------------------
    ' Renvoie : VRAI si tout s'est bien passé.
    '------------------------------------------------------------------------------------------------------
    ' Remarque : si vous utilisez la méthode xlCellTypeVisible (par défaut) pensez à effacer les filtres du
    ' tableau structuré source si vous voulez copier toutes les données de la colonne et pas uniquement les
    ' cellules visibles.
    '------------------------------------------------------------------------------------------------------
    ' Gestion des erreurs:
    On Error GoTo Gest_Err
    Err.Clear
     
     
    ' Mémorise la configuration:
    Dim Anc_Visible As Long
    Dim Anc_Feuille As String
    Dim Anc_Screen As Boolean
    Dim TS_Err_Description As String
     
    Anc_Visible = Sheets(TS_Dest.Parent.Name).Visible
    Anc_Feuille = ActiveSheet.Name
    Anc_Screen = Application.ScreenUpdating
     
    ' Retrouve le numéro de la colonne source et vérifie sa cohérence (ou -1 si erreur):
    Colonne_Source = TS_IndexColonne(TS_Source, Colonne_Source)
    If Colonne_Source = -1 Then Err.Raise vbObjectError, , TS_Err_Description
     
    ' Retrouve le numéro de la colonne destination et vérifie sa cohérence (ou -1 si erreur):
    Colonne_Dest = TS_IndexColonne(TS_Dest, Colonne_Dest)
    If Colonne_Dest = -1 Then Err.Raise vbObjectError, , TS_Err_Description
     
    ' Contrôle la cohérence de la ligne destination passée en argument:
    Ligne_Dest = TS_IndexLigne(TS_Dest, Ligne_Dest)
    If Ligne_Dest = -1 Then Err.Raise vbObjectError, , TS_Err_Description
     
    ' Copie les données:
    TS_Source.ListObject.ListColumns(Colonne_Source).DataBodyRange.SpecialCells(Méthode).Copy
     
    ' Colle les données (la feuille du tableau destination doit être activée pour coller des données):
    Application.ScreenUpdating = False
    Sheets(TS_Dest.Parent.Name).Visible = True
    Sheets(TS_Dest.Parent.Name).Activate
    Call TS_Sélectionner(TS_Dest, Colonne_Dest, Ligne_Dest)
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
    ' Renvoie Vrai:
    TS_CopierUneColonne = True
     
    ' Fin du traitement:
    Gest_Err:
     
    ' Restaure la configuration:
    Sheets(TS_Dest.Parent.Name).Visible = Anc_Visible
    Sheets(Anc_Feuille).Activate
    Application.ScreenUpdating = Anc_Screen
     
    If Err.Number = 1004 Then Err.Clear
    TS_Err_Number = Err.Number
    TS_Err_Description = Err.Description
    If Err.Number <> 0 Then
        If TS_Méthode_Err = TS_Générer_Erreur Then Err.Raise TS_Err_Number, "TS_CopierUneColonne", TS_Err_Description
        If TS_Méthode_Err = TS_MsgBox_Erreur Then MsgBox TS_Err_Number & " : " & TS_Err_Description, vbInformation, "TS_CopierUneColonne"
    End If
    Err.Clear
     
    End Function

    Il manque la déclaration de la variable TS_Err_Number et tout plante ..... étrange

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Merci infiniment pour vos propositions que j'ai testées, mais les entêtes de colonnes des 2 tableaux ne sont pas identiques et je ne peux pas les modifier
    Dans ce cas, il faut créer une fonction générique avec un argument qui contiendrait une variable table à deux dimensions l'une contient la liste du nom des colonnes "source" et l'autre la correspondance de la "cible" et idéalement alimentée par une table structurée.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonsoir,

    Je voyais ça beaucoup plus simple

    Mon copier-coller initial fonctionne bien et il est rapide

    Pour résoudre le problème de la conversion en nombre, j'ai placé la conversion des cellules seulement sur la colonne de la plage importée en lançant le code ci-dessous vers la fin de la macro principale, qui importe un tableau sql Power Query, le compare au tableau principal et ajoute les lignes qui sont manquantes dans le tableau principal.

    Meilleures salutations et encore mille merci, j'ai découvert d'autres astuces en essayant vos recommandations

  9. #9
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Citation Envoyé par goninph Voir le message
    Il manque la déclaration de la variable TS_Err_Number et tout plante ..... étrange
    C'est normal, il faut installer tout le module "TS" est pas uniquement une des fonctions.

    Citation Envoyé par goninph Voir le message
    mais les entêtes de colonnes des 2 tableaux ne sont pas identiques et je ne peux pas les modifier
    Pas de problème, il suffit de rajouter une liste des colonnes destinataires, par exemple pour C1, C2, et C3 :

    Code VBA : 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
    Option Explicit
     
    '------------------------------------------------------------------------------------------------------
    ' Toutes les informations sur les fonctions sont dans le tutoriel:
    ' https://laurent-ott.developpez.com/tutoriels/Tableaux-Structures
    '------------------------------------------------------------------------------------------------------
    ' Références à installer :
    ' ~~~~~~~~~~~~~~~~~~~~~~~~
    ' Microsoft Office 16.0 Object Library
    ' Microsoft Forms 2.0 Object Library
    '------------------------------------------------------------------------------------------------------
     
    '------------------------------------------------------------------------------------------------------
    Sub exemple()
    '------------------------------------------------------------------------------------------------------
     
    ' Déclaration des variables:
    Dim TS_S As Range
    Dim TS_D As Range
    Dim ListeColonne As Variant, ListeDest As Variant
    Dim i As Integer
     
    ' Initialisation des tableaux sources et destination, inutile de préciser la feuille
    ' si l'on est dans le même classeur ni que c'est un objet ListObject:
    Set TS_S = Range("TS_Eleves") ' Tableau Source.
    Set TS_D = Range("TS_Clone")  ' Tableau Destination.
     
    ' Efface les filtres du tableau source s'il faut reprendre toutes les lignes:
    Call TS_Filtres_Effacer(TS_S)
     
    ' Définition des colonnes à copier:
    ListeColonne = Array("Nom Famille", "Prénom", "Note")
    ListeDest = Array("C1", "C2", "C3")
     
    ' Boucle pour copier les colonnes sur la première ligne de la destination:
    For i = 0 To UBound(ListeColonne)
        Call TS_CopierUneColonne(TS_S, ListeColonne(i), TS_D, ListeDest(i), 1)
    Next i
     
     
    End Sub
    '------------------------------------------------------------------------------------------------------


    Citation Envoyé par goninph Voir le message
    Je voyais ça beaucoup plus simple
    On peut aussi se passer de la déclaration des variables et de la boucle, ça donne :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '------------------------------------------------------------------------------------------------------
    Sub exemple2()
    '------------------------------------------------------------------------------------------------------
    ' Efface les filtres du tableau source s'il faut reprendre toutes les lignes:
    Call TS_Filtres_Effacer(Range("TS_Eleves"))
     
    ' Copie les colonnes désirées:
    Call TS_CopierUneColonne(Range("TS_Eleves"), "Nom Famille", Range("TS_Clone"), "C1", 1)
    Call TS_CopierUneColonne(Range("TS_Eleves"), "Prénom", Range("TS_Clone"), "C2", 1)
    Call TS_CopierUneColonne(Range("TS_Eleves"), "Note", Range("TS_Clone"), "C3", 1)
     
    End Sub
    '------------------------------------------------------------------------------------------------------

  10. #10
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Super et merci, y'a du boulot pour ce week-end

  11. #11
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Petite question, le module est téléchargeable ou faut-il copier tout le code ?

  12. #12
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Il faut télécharger le fichier joint, et copier coller le module TS dans votre projet, sans oublier de mettre les 2 références indiquées.

Discussions similaires

  1. [XL-2007] Nombre stocké sous forme de texte
    Par torvald dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/05/2011, 13h10
  2. Nombre stocké sous forme de texte .xls
    Par pfellmann dans le forum iReport
    Réponses: 0
    Dernier message: 05/08/2009, 11h11
  3. Nombre stocké sous forme de texte
    Par Archampi dans le forum Excel
    Réponses: 2
    Dernier message: 05/11/2008, 20h53
  4. Nombre stocké sous forme de texte
    Par krhyme dans le forum IHM
    Réponses: 5
    Dernier message: 31/10/2007, 00h12
  5. [VBA-E] Probleme avec Nombre stocké sous forme de texte
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2006, 01h46

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