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 :

Variables tableau dans VBA Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut Variables tableau dans VBA Excel
    Bonsoir le forum,

    Voilà, je suis en train de tester une variable de type tableau dans un code.

    Le code ci-dessous me donne bien le contenu de chaque ligne du tableau, mais je souhaiterais l'améliorer.

    Vous voici le 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
    20
    Sub TestVariableTableau()
    'Déclaration des variables
    Dim Untab(1 To 3, 1 To 2) As Variant
    Dim i As Integer, j As Integer
    Dim resultat As String
    'Remplissage de la première colonne
    Untab(1, 1) = "31/01/2011"
    Untab(2, 1) = "01/01/2011"
    Untab(3, 1) = "10/01/2011"
    'Remplissage de la seconde colonne
    Untab(1, 2) = "10:00"
    Untab(2, 2) = "16:00"
    Untab(3, 2) = "11:30"
    For i = 1 To UBound(Untab, 1)
         For j = 1 To UBound(Untab, 2)
              resultat = resultat & " " & Untab(i, j) & vbCr
         Next j
    Next i
    MsgBox resultat
    End Sub
    Je souhaiterais que mon tableau soit lu en triant les dates de la première colonne et qu'en fonction de ce tri, les heures figurant dans la seconde colonne soient directement liés à la date triée dans la première colonne.

    En d'autre termes, je souhaiterais que le msgBox me donne ce qui suit.
    1. 01/01/2011 à 16:00
    2. 10/01/2011 à 11:30
    3. 31/01/2011 à 10:00

    Serait-ce possible?

    Si c'est le cas, pourrais-je avoir ne serait-ce qu'un bout de code pour pouvoir m'orienter?

    Je remercie d'avance la personne qui pourra me venir en aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    puisque tu rentres tes dates dans ton code, pourquoi ne pas les saisir directement dans l'ordre souhaité ?

    Si ce que tu nous mets n'est qu'un exemple, d'où viennent ces dates ? D'une saisie ? D'une feuille Excel ?

    Philippe

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Bonjour abdel792

    Faut-il faire le tri sur la première colonne du tableau ou sur la concaténation de la première et de la seconde colonne ?
    C'est le cas si deux événements ont la même date mais des heures différentes.

    A+
    bon dimanche
    La qualité et la précision de la réponse sont proportionnelles à celles de la question.

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Je te conseil de lire ce tutoriel, il t'apportera ce qui te manque je pense.
    Tout dépend ce que tu veux faire de ces données par la suite, mais tu as aussi les Dictionary, fait une recherche sur le forum VBA tu y trouveras des exemples.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Bonjour Philippe et PPZ78,

    En fait, le tableau est généré par le biais d'une boucle For Each, il liste le résultat d'une recherche effectué sur une feuille Excel dans un MsgBox.

    La lecture de son contenu donne un résultat similaire à celui que je vous ai posté dans mon premier post, dans la mesure où les dates trouvées dans la feuille ne sont pas lues dans l'ordre.

    PPZ78, je souhaiterais avoir le tri de la concaténation de la date et de l'heure.


    Merci beaucoup aussi Qwazerty,

    Je vais jeter un petit coup d'oeil à ce tuto.

    Amicalement.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 50
    Points : 46
    Points
    46
    Par défaut
    Rebonjour le forum,

    Tout d'abord, je tenais à vous remercier tous, Philippe, PPZ78 et Qwazerty pour votre aide.

    Finalement, en lisant et relisant le superbe tuto de SilkyRoad et après avoir fait plusieurs recherches, j'ai pu réaliser la procédure suivante, qui réalise bien ce que je voulais faire.

    Le test donne bien le résultat que je souhaitais et je compte désormais la transformer en fonction qui recevra en paramètre, le tableau à trier.

    Je vous soumet le code ci-dessous en espérant que ça aidera d'autres personnes.

    Si j'ai fais des erreurs, je vous remercie de me les signaler, car je suis débutant dans le domaine.

    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
    Sub TestVariableTableau()
    Dim LeTableau(1 To 3, 1 To 2) As Date
    Dim a As Long, b As Long, i As Long
    Dim str1 As String, str2 As String, str3 As String, str4 As String, resultat As String
       'Remplissage de la première colonne
    LeTableau(1, 1) = "31/01/2011"
    LeTableau(2, 1) = "01/01/2011"
    LeTableau(3, 1) = "10/01/2011"
    'Remplissage de la seconde colonne
    LeTableau(1, 2) = "10:00"
    LeTableau(2, 2) = "16:00"
    LeTableau(3, 2) = "11:30"
    'Exécution du tri et mise à jour du tableau
    For a = 1 To UBound(LeTableau, 1)
         For b = a To UBound(LeTableau, 1)
              If CDate(Format(LeTableau(b, 1), "dd mm yyyy")) < CDate(Format(LeTableau(a, 1), "dd mm yyyy")) Then
                   str1 = LeTableau(a, 1)
                   str2 = LeTableau(b, 1)
                   str3 = LeTableau(a, 2)
                   str4 = LeTableau(b, 2)
                   LeTableau(a, 1) = str2
                   LeTableau(b, 1) = str1
                   LeTableau(a, 2) = str4
                   LeTableau(b, 2) = str3
              End If
         Next b
    Next a
    'Ittération sur le nouveau tableau trié
    For i = 1 To UBound(LeTableau, 1)
         resultat = resultat & LeTableau(i, 1) & " à " & Format(LeTableau(i, 2), "hh:mm") & vbCr
    Next i
    MsgBox resultat
    End Sub

    Amicalement.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/01/2023, 10h20
  2. [VBA-E] Compatibilité de Date dans VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2006, 19h25
  3. Réponses: 3
    Dernier message: 09/04/2006, 09h10
  4. variables tableau dans requettes mysql ... et affichage
    Par mulbek dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/10/2005, 16h29

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