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 :

Supprimer lignes vides d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 29
    Points
    29
    Par défaut Supprimer lignes vides d'un tableau
    Bonjour,

    Je souhaiterais supprimer les lignes vide du Tableau "Tbl".
    Actuellement le Tableau créé ressort bien les données recherchées mais avec de nombreuses lignes vides. Voici la macro:


    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
    Sub Calcul()
     
    UserForm1.ListBox2.Clear
     
    Dim dist As Double
    Dim distance As Integer
    Dim T As Single, i As Single, 
     
    T = UserForm1.ComboBox1.ListIndex + 2
     
    LtT = Range("D" & T)
    LgT = Range("E" & T)
     
    For i = 2 To 200
     
    LT = Range("D" & i)
    Lg = Range("E" & i)
     
    dist = (Sin(LT) * Sin(LtT) + Cos(LT) * Cos(LtT) * Cos(LgT - Lg))
     
    If dist <> 1 Then distance = (Atn(-dist / Sqr(-dist * dist + 1)) + 2 * Atn(1)) * 6371 Else distance = "0"
     
      Dim Tbl(1 To 200, 1 To 200)
     
       If distance < UserForm1.ComboBox2.Value Then
     
        Tbl(i, 1) = distance
        Tbl(i, 2) = Range("A" & i)
       End If
     
       UserForm1.ListBox2.ColumnCount = 2
      UserForm1.ListBox2.ColumnWidths = "30,80"
       UserForm1.ListBox2.List = Tbl
     
     Next
    End sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Il te faut donc ne pas dimensionner le tableau au départ et le redimensionner au fur et à mesure.
    Intéresse-toi à Redim Preserve.

    EDIT : et si le but est le remplissage d'une listbox, je ne comprends même pas pourquoi passer par un tremplin tableau. Ajoute directement à la listbox et uniquement si condition remplie.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour à tou(te)s

    le redimensionner au fur et à mesure.
    sauf erreur de ma part, le tableau est à 2 dimensions donc...

    mon idee, ajouter une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim z As Integer
    z = 0
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      If distance < UserForm1.ComboBox2.Value Then
        z = z + 1
        Tbl(z, 1) = distance
        Tbl(z, 2) = Range("A" & i)
      End If
    à voir....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut,

    autre possibilité à tester: utiliser une ArrayList.
    Avantage de l'ArrayList? Elle gère elle même le redimensionnement!
    Ca donne ça:
    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
     
    Sub Calcul()
     
        UserForm1.ListBox2.Clear
     
        Dim dist As Double
        Dim distance As Integer
        Dim T As Single, i As Single
     
        '===Creation de l'ArrayList===
        Dim arrList As Object
        Set arrList = CreateObject("System.Collections.ArrayList")
        Dim varTab As Variant ' pour transformer l'arraylist en tableau
     
        T = UserForm1.ComboBox1.ListIndex + 2
     
        LtT = Range("D" & T)
        LgT = Range("E" & T)
     
        For i = 2 To 200
            LT = Range("D" & i)
            Lg = Range("E" & i)
     
            dist = (Sin(LT) * Sin(LtT) + Cos(LT) * Cos(LtT) * Cos(LgT - Lg))
     
            If dist <> 1 Then distance = (Atn(-dist / Sqr(-dist * dist + 1)) + 2 * Atn(1)) * 6371 Else distance = "0"
     
            Dim Tbl(1 To 200, 1 To 200)
     
            If distance < UserForm1.ComboBox2.Value Then
     
        '    Tbl(i, 1) = distance
        '    Tbl(i, 2) = Range("A" & i)
     
            ' ===insertion dans l'arraylist, à l'index i===
            arrList.Insert i, Array(distance, Range("A" & i))
     
            End If
     
            ' ===NB: ces 3 instructions ne devraient-elles pas être après le next???===
            UserForm1.ListBox2.ColumnCount = 2
            UserForm1.ListBox2.ColumnWidths = "30,80"
     
            ' ===transformer l'ArrayList en tableau
            varTab = arrList.ToArray()
            ' UserForm1.ListBox2.List = Tbl
            UserForm1.ListBox2.List = varTab
        Next
     
    End Sub

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Philippe,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arrList.Insert i, Array(distance, Range("A" & i))
    on en apprend tous les jours
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    exemple de suppression de lignes vides dans un Array 2D


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub UserForm_Initialize()
       a = [A2:D7].Value
       Dim tmp(): ReDim tmp(1 To UBound(a))
       For i = LBound(a) To UBound(a)  ' sup lignes vides de a(,)
         If a(i, 1) <> "" Then n = n + 1: tmp(n) = i
       Next
       ReDim Preserve tmp(1 To n)
       Me.ListBox1.List = Application.Index(a, Application.Transpose(tmp), _
          Application.Transpose(Evaluate("Row(1:" & UBound(a, 2) & ")")))
    End Sub

    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  7. #7
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut @boisgontierjacques,

    A mon humble avis, le premier Dim tmp() est inutile.
    Comme vu dans une précédente discussion,
    le ReDim fait office de Dim, et déclare aussi la variable.
    Cordialement,

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Vous ne croyez vraiment pas qu'il suffirait d'ajouter directement à la listbox (sans aucun tableau tremplin) avec la condition exprimée ?
    Le AddItem ne crée, lui, aucune "ligne blanche"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Citation Envoyé par unparia Voir le message
    Vous ne croyez vraiment pas qu'il suffirait d'ajouter directement à la listbox (sans aucun tableau tremplin) avec la condition exprimée ?
    Le AddItem ne crée, lui, aucune "ligne blanche"
    Bonjour unparia,

    quand j'ai proposé ma solution, je n'avais pas vu ton "edit" mais pourquoi pas, je pense que maintenant, l'auteur du sujet a le choix
    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    A mon humble avis, le premier Dim tmp() est inutile.
    Il faut essayer avant d'affirmer.

    Le AddItem ne crée, lui, aucune "ligne blanche"
    Oui mais c'est lent et lourd en écriture s'il y a plusieurs colonnes.
    La méthode List est la plus rapide

    Boisgontier
    http://boisgontierjacques.free.fr

  11. #11
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Il faut essayer avant d'affirmer.
    Très juste!
    Je viens donc d'essayer, et je confirme.
    Pas besoin de Dim tmp().
    Si je compile avec Option Explicit, pas de message du compilateur.
    Et si je lance le userform, il affiche correctement les lignes, sans blanc.
    Mais bon, c'est un peu du détails!
    Cordialement,

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour boisgontierjacques
    Plus d'écriture de code, oui
    Plus lent, pas vraiment si l'on échappe aux lenteurs de mise à jour de l'affichage pendant le remplissage. Même en utilisant la propriété Visible.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  13. #13
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Pour 10.000 lignes et 4 colonnes, avec Additem, on obtient 7 secondes contre 0,2 seconde avec la méthode que j'ai proposé.
    (les boucles sur les objets des formulaires ralentissent la vitesse d'éxécution)

    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
     
    Private Sub UserForm_Initialize()
       t = Timer
       a = [A2:D10000].Value
       j = 0
       For i = LBound(a) To UBound(a)
         If a(i, 1) <> "" Then
            Me.ListBox1.AddItem a(i, 1)
            Me.ListBox1.List(j, 1) = a(i, 2)
            Me.ListBox1.List(j, 2) = a(i, 3)
            Me.ListBox1.List(j, 3) = a(i, 4)
            j = j + 1
         End If
       Next i
       MsgBox Timer - t
    End Sub
    Pour 10.000 lignes, avec ArrayList, on obtient 0,5 s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub UserForm_Initialize()
      Set AL = CreateObject("System.Collections.ArrayList")
      a = [A2:D10000].Value
      For i = LBound(a) To UBound(a)
         If a(i, 1) <> "" Then AL.Add Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4))
      Next i
      Me.ListBox1.List = Application.Transpose(Application.Transpose(AL.toarray))
    End Sub
    Boisgontier
    http://boisgontierjacques.free.fr

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Un très grand Merci pour vos réponses, on apprend vite avec vous!

    Pour le moment j'ai essayé:

    La méthode de casefayere mais ça me calcul tout, comme si la condition n'était pas prise en compte.
    La méthode de Philippe semble bien fonctionner mais me renvoie l'erreur sur ce code ( impr écran ci dessous), je ne vois pas la cause...
    arrList.Insert i, Array(distance, Range("A" & i) surligner en jaune. Pourtant la valeur correspond à i est correcte quand on passe la sourie dessus.
    Nom : test.jpg
Affichages : 3595
Taille : 168,3 Ko

    Ne me reste plus qu'à tester la méthode de jacques!

  15. #15
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Hello,

    Dans l'instruction d'insertion, essai de remplace i par i-2
    Il semble qu'il faille démarrer avec index=0!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' ===insertion dans l'arraylist, à l'index i===
    arrList.Insert i - 2, Array(distance, Range("A" & i))
    EDIT
    =====
    Dans ce cas, la méthode Insert est mal choisie.
    Il vaut mieux utiliser la méthode Add:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' ===ajout à l'arraylist===
    arrList.Add Array(distance, Range("A" & i))

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    C'est exactement ce que je viens d'essayer mais le résultat me renvoie une listbox vide...

    Même chose avec la méthode add

  17. #17
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    As tu regardé avec la fenêtre des variables locales(menu Affichage) le contenu du tableau varTab?
    Est il bien rempli?

    EDIT:
    Le tableau est bien rempli, mais il n'a pas le bon format.
    Essai une autre solution.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Rien ne s'affiche...je n'ai aucune erreur. C'est comme si la listbox se remplissait d'éléments vides
    Fichiers attachés Fichiers attachés

  19. #19
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Bon, dernier essai avant que j'aille me coucher!!

    Essai ça, pour redresser le tableau.
    Sur mon test, ça marche!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' ===transformer l'ArrayList en tableau
    varTab = arrList.ToArray()
    ' UserForm1.ListBox2.List = Tbl
    UserForm1.ListBox2.List = WorksheetFunction.index(varTab, 0) '<<= modif ici!
    Je viens de tester sur ton fichier: c'est ok.

    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
    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
     
    Sub Calcul()
     
     
     UserForm1.ListBox2.Clear
     
        Dim dist As Double
        Dim distance As Integer
        Dim T As Single, i As Single
     
        '===Creation de l'ArrayList===
        Dim arrList As Object
        Set arrList = CreateObject("System.Collections.ArrayList")
        Dim varTab As Variant ' pour transformer l'arraylist en tableau
        Dim varTab2 As Variant ' <<==modif
     
     
        T = UserForm1.ComboBox1.ListIndex + 2
     If T > 2 Then
        LtT = Range("D" & T)
        LgT = Range("E" & T)
     End If
        For i = 2 To 200
            LT = Range("D" & i)
            Lg = Range("E" & i)
     
            dist = (Sin(LT) * Sin(LtT) + Cos(LT) * Cos(LtT) * Cos(LgT - Lg))
     
            If dist <> 1 Then distance = (Atn(-dist / Sqr(-dist * dist + 1)) + 2 * Atn(1)) * 6371 Else distance = "0"
     
            Dim Tbl(1 To 200, 1 To 200)
     
            If distance < UserForm1.ComboBox2.Value Then
     
        '    Tbl(i, 1) = distance
        '    Tbl(i, 2) = Range("A" & i)
     
            ' ===insertion dans l'arraylist, à l'index i===
            arrList.Add Array(distance, Range("A" & i).Value) ' <<==modif
     
            End If
     
            ' ===NB: ces 3 instructions ne devraient-elles pas être après le next???===
            UserForm1.ListBox2.ColumnCount = 2
            UserForm1.ListBox2.ColumnWidths = "30,80"
     
            ' ===transformer l'ArrayList en tableau
            varTab = arrList.ToArray()
            ' UserForm1.ListBox2.List = Tbl
            varTab2 = WorksheetFunction.Index(varTab, 0) ' <<==modif
            UserForm1.ListBox2.List = varTab2
        Next
     
     
     
    End Sub

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2014
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    Extra! Félicitation Philippe et Merci pour tout ce temps consacré! Bonne soirée!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD-2003] Supprimer ligne vide dans tableau
    Par ginaub00 dans le forum Word
    Réponses: 1
    Dernier message: 27/05/2010, 17h09
  2. [XL-2003] (Cacher) modifié en : Supprimer les lignes vides dans un tableau
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/04/2009, 18h12
  3. Réponses: 4
    Dernier message: 25/11/2008, 09h46
  4. Réponses: 10
    Dernier message: 10/10/2008, 13h22
  5. Réponses: 1
    Dernier message: 12/12/2006, 12h00

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