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 Access Discussion :

Instruction With trier la colonne 1 dans l'ordre croissant


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 212
    Points : 150
    Points
    150
    Par défaut Instruction With trier la colonne 1 dans l'ordre croissant
    Bonjour,
    j'ai une instance Excel ouverte et je créé un tableau.
    Je n'arrive pas à trier la première colonne (A) ou l'entête se nomme [Date / Heure].

    j'ai suivi la faq mais j'ai des erreurs ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                        xlWks.Range("A2:A" & Nb_LignesA).NumberFormat = "h:mm:ss;@"
                        xlWks.Range(xlWks.Cells(1, 1), xlWks.Cells(Nb_LignesA, Nb_LignesB)).Select
     
     
                        With xlWks
                            .ListObjects.Add(xlSrcRange, , , xlYes).Name = "Tableau"
                            .ListObjects("Tableau").TableStyle = "TableStyleMedium2"
     
     
                        End With
    Pour info ce moment là du code tout le tableau est sélectionné ...

    Je vais continué à chercher jusqu'à que je tombe sur un bon samaritain

    Merci.

  2. #2
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Salut
    Dans un tableau structuré 1ère feuille, 1er tableau, 1ère colonne ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkSheet(1).ListObjects(1).Range.Sort key1:=.ListColumns(1), order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 212
    Points : 150
    Points
    150
    Par défaut
    Bonjour Hyperion13,
    ton code que se soit deans l'instruction ou en dehors me met une erreur sur .ListColumns(1)

    Quand je retape la ligne de code dans l'instruction With, l'aide au développement (je sais pas si c'est le bon terme), ne me propose pas .ListColumns voir image.

    Nom : listcolumns.jpg
Affichages : 76
Taille : 178,8 Ko

    Merci.

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 878
    Points : 3 467
    Points
    3 467
    Par défaut
    Bonjour Apoulit, hyperion13,

    L'objet "ListColumns" fait partie de l'objet "ListObjects", il ne peut donc pas être appelé comme vous le faite. Pour faire simple juste à remplacer dans le code le "ListColumns" par "Range(A1)" si vous voulez bien faire le trie sur la première colonne. Pour utiliser le "ListColumns" dans votre code, il faut faire ".ListObjects(1).ListColumns(1)"

    Bonne journée

  5. #5
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    re
    effectivement les subtilités d'appels dans XL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        .ListObjects("Tableau").Sort.SortFields.Clear
        .ListObjects("Tableau").Range.Sort key1:=.ListObjects("Tableau").ListColumns(1), order1:=xlAscending, _
            Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 212
    Points : 150
    Points
    150
    Par défaut
    Merci pour vos réponses ca fonctionne plus ou moins mais je me heurte au problème suivant ...
    Mon fichier de départ est en XLS visiblement Excel 97-2003 (qui provient d'un vieux logiciel de gestion d'adhérent d'une association de Badminton et oui je joue au bad lol), j'obtiens un message Microsoft Excel - Vérificateur de compatibilité qui sort et qui fait que ça beugue !
    Nom : Capture_compatibilite_dbs.JPG
Affichages : 62
Taille : 52,5 Ko
    Voici ma démarche donc avant de manipuler le fichier je le sauve sous xlsx via Excel... je le sauve même comme ça "monomdefichier.XLS.xlsx"
    J'envoie le code VBA ça fonctionne!

    Mais le but c'est de partir de mon fichier XLS et de sauvegarder sous .xlsx avec le code Vba.


    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xlApp.DisplayAlerts = False 'Le message d'enregistrement est désactivé
    xlBook.SaveAs FichierXl & ".xlsx"
    FichierXl = FichierXl & ".xlsx"
    et là ca fonctionne plus ...
    Nom : Capture_compatibilite_dbs2.JPG
Affichages : 61
Taille : 60,5 Ko


    bon voilà j'y suis presque

  7. #7
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim xlWbk As Excel.Workbook
    Dim strFilePath As String, strFileName As String, strExt As String
     
    Set xlWbk = ActiveWorkbook
     
    strFilePath = xlWb.Path & Application.PathSeparator
    strFileName = "NoveauNom"
    strExt = ".xlsx"
     
    xlWbk.CheckCompatibility = False
    xlWbk.SaveAs strFilePath & strFileName & strExt, 51
    xlWbk.Close True

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 212
    Points : 150
    Points
    150
    Par défaut
    Slt,
    j'ai corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFilePath = xlWb.Path & Application.PathSeparator
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFilePath = xlWbk.Path & Application.PathSeparator
    mais j'ai une erreur sur

    et
    merci

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 855
    Points : 14 966
    Points
    14 966
    Par défaut
    bonsoir,
    Application, désigne l'instance Access, pour Excel, il faut prendre celle que tu as déclaré au début de ton code comme dans cet exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim xlApp as New Excel.Application
    ' ou en late binding
        Dim xlApp As Object
        Set xlApp = CreateObject("Excel.Application")
     
    debug.print xlApp.Path
    debug.print xlApp.PathSeparator
    set xlApp = nothing

  10. #10
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    re
    Si je comprends bien, à partir d'Acc tu pilotes Excel, et tu ouvres un classeur 97-2003 dans lequel tu veux créer un tableau structuré et formater la 1ère colonne puis sauvegarder ce classeur dans une version 2007 et +.
    Donc le plus simple parmi d'autres solutions, serait d'abord d'enregistrer sous une version 2007 et + ton classeur pour appliquer les méthodes compatibles.
    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
    Dim lstObj As ListObject
    Dim iRows As Long, iCols As Long
     
    strFileNameN = "20221214_apoulit2007Plus"
    strExtN = ".xlsx"
     
    xlWbk.CheckCompatibility = False
    xlWbk.SaveAs strFilePath & strSlash & strFileNameN & strExtN, 51
     
    With ActiveWorkbook
        Set xlWsh = .Worksheets("Feuil1")
        With xlWsh
            iRows = .Cells(.Rows.Count, 1).End(xlUp).Row
            iCols = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Set lstObj = .ListObjects.Add(xlSrcRange, .Cells(1).Resize(iRows, iCols), , xlYes)
        End With
        With lstObj
            .Name = "Tableau"
            .TableStyle = "TableStyleMedium2"
            .Sort.SortFields.Clear
            .Range.Sort key1:=.ListColumns(1), order1:=xlAscending, _
                Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
            .ListColumns(1).DataBodyRange.NumberFormat = "h:mm:ss;@"
        End With
    End With

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 212
    Points : 150
    Points
    150
    Par défaut
    Bonsoir Tee_Granbois et Hyperion ... j'y étais arrivé...je garde votre code dans ma bibliothèque mais j'ai compris la démarche à suivre.
    Un grand merci en tout cas !

    Passez de bonnes fêtes !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. trier un fichier xml dans un ordre précis
    Par xps1616 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 01/12/2011, 09h23
  2. Réponses: 4
    Dernier message: 27/05/2010, 10h07
  3. Obtenir les colonnes d'une table par ADO dans l'ordre croissant
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/11/2007, 18h59
  4. Réponses: 2
    Dernier message: 12/06/2006, 19h18

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