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

VB 6 et antérieur Discussion :

Comment réorganiser par ordre croissant une donnée ?


Sujet :

VB 6 et antérieur

  1. #1
    Inactif  
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2018
    Messages : 49
    Points : 40
    Points
    40
    Par défaut Comment réorganiser par ordre croissant une donnée ?
    Bonjour,

    quelqu'un sait comment réorganiser des données par ordre croissant ?

    Exemple ci dessous :

    1 = Poulpe
    2 = Thon
    3 =
    4 = Sardine
    5 = Huitre


    J'aimerai que si un des chiffres = Néant alors on remonte les informations de cette façon :

    1 = Poulpe
    2 = Thon
    3 = Sardine
    4 = Huitre
    5 =

    Et ainsi des uite si une autre valeur venait à être supprimé ou ajouté.


    J'ai pensé à la fonction FOR mais je n'ai aucune idée de comment faire en sorte qu'il comprenne les valeurs à remo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim cible as string
     
    cible = GetVar(App.Path & "\Marchandises.txt", "POISSONERIE", i, Cible)
     
    For i = 1 to 5
    If VAL(GetVar(App.Path & "\Marchandises.txt", "POISSONERIE", i)) = Vbnullstring then Call PutVar(App.Path & "\Marchandises.txt", "POISSONERIE", cible)
    next i
    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 265
    Points : 1 843
    Points
    1 843
    Par défaut
    procéder par étape:
    1-récupérer les valeurs
    2-les réorganiser
    3-les réécrire

    Je suppose que GetVar retourne la valeur correspondante à l'entrée cible d'une section "POISSONNERIE" dans un fichier de type ini

    Je pense que j'utiliserai Trim (..) pour supprimer les espaces superflus et que je comparerai à une chaine vide "". Et si j'ai une chaine vide, je ne récupère pas l'info sinon je la stocke dans un tableau initialement "vide", comme ça la réorganisation se fait facilement.

    Et enfin, je réécris les données en parcourant mon tableau

  3. #3
    Inactif  
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2018
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Yeah umfred je n'avais pas pensé à ça !

    J'ai bidouiller un morceau de code, la création du nouveau fichier fonctionne bien mais ça ne me copie pas correctement les valeurs.
    Je veux bien un coup de pouce

    merci
    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
    Dim NAMEQ1 As String
    Dim NAMEQ2 As String
    Dim cible As String
    Dim z As Integer
    Dim FileName As String
    Dim J As Long
     
    For i = 1 To 5
    If GetVar(App.Path & "\Marchandises.txt", "POISSONERIE", i, cible) = vbNullString Then
    z = FreeFile
    FileName = (App.Path & "\Marchandises2.txt")
    Open FileName For Output As #z
    Print #z, "" 'créer le deuxieme fichier temporaire
    Close #z
    End If
    Next i
     
    For J = 1 To 5
    NAMEQ1 = Trim$(GetVar(App.Path & "\Marchandises.txt", "POISSONERIE", J))
    Call PutVar(App.Path & "\Marchandises2.txt", "POISSONERIE", J, NAMEQ1) 'je créer un nouveau fichier dans lequel je copie le nouveau classement
    NAMEQ2 = Trim$(GetVar(App.Path & "\Marchandises2.txt", "POISSONERIE", J))
    Call PutVar(App.Path & "\Marchandises.txt", "POISSONERIE", J, NAMEQ2) 'je copie dans mon fichier initiale le nouveau classement
    Call Kill(App.Path & "\Marchandises2.txt") 'je supprime le nouveau fichier créée
     Next J

  4. #4
    Inactif  
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2018
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    J'ai finalement réussi !
    Je partage la solution si ça peut aider quelqu'un :



    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
    Dim NAMEQ1 As String
    Dim NAMEQ2 As String
    Dim Z As Integer
    Dim FileName As String
    Dim J As Long
    Dim NUMQ As String
    Dim CUMUL As Long
     
    Z = FreeFile
    FileName = (App.Path & "\Marchandises2.txt")
    Open FileName For Output As #Z
    Print #Z, "" 'créer le deuxieme fichier temporaire
    Close #Z
    CUMUL = 0
    NUMQ = 0
     
    For i = 1 To 5
    NAMEQ1 = Trim$(GetVar(App.Path & "\Marchandises.txt", "POISSONERIE", 0 + i))
     
    If NAMEQ1 <> vbNullString Then
    If CUMUL = 0 Then NUMQ = i
    If CUMUL > 0 Then NUMQ = i - CUMUL
    Call PutVar(App.Path & "\Marchandises2.txt", "POISSONERIE"", NUMQ, NAMEQ1) 'je créer un nouveau fichier dans lequel je copie le nouveau classement
    CUMUL = 0
    Else
    CUMUL = CUMUL + 1
    End If
    Next i
     
     
    For J = 1 To 5
    NAMEQ2 = Trim$(GetVar(App.Path & "\Marchandises2.txt", "POISSONERIE", 0 + J))
    Call PutVar(App.Path & "\Marchandises.txt", "POISSONERIE", 0 + J, NAMEQ2) 'je copie dans mon fichier initiale le nouveau classement
    Next J
     
     
    Call Kill(App.Path & "\Marchandises2.txt", "POISSONERIE") 'je supprime le nouveau fichier créée
    Testé et fonctionnel
    Je reste à disposition si quelqu'un voit une autre optimisation possible

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 101
    Points : 16 617
    Points
    16 617
    Par défaut
    Ligne 23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call PutVar(App.Path & "\Marchandises2.txt", "POISSONERIE"", NUMQ, NAMEQ1) 'je créer un nouveau fichier dans lequel je copie le nouveau classement
    .
    Je dirai plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call PutVar(App.Path & "\Marchandises2.txt", "POISSONERIE", NUMQ, NAMEQ1) 'je créer un nouveau fichier dans lequel je copie le nouveau classement
    Un " de trop

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

Discussions similaires

  1. Trier par ordre croissant une colonne de tableau
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/05/2015, 20h21
  2. Réponses: 3
    Dernier message: 10/06/2010, 16h58
  3. classement par ordre croissant d'une synthese de serie de nombre
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/11/2007, 23h38
  4. [VBA]Trier les valeur d une liste par ordre croissant
    Par PierrotKun dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/03/2007, 09h37
  5. Réponses: 1
    Dernier message: 27/05/2006, 23h13

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