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 :

Comment détecter qu'un tableau dynamique est vide suite à Erase [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut Comment détecter qu'un tableau dynamique est vide suite à Erase
    Bonjour le formum,

    j'ai un problème tout bête je pense mais je ne trouve rien sur le sujet.
    Suite à une commande Erase d'un tableau dynamique de type Variant à 2 dimensions, le type de mon tableau devient variant/variant() et pas variant/Empty.
    Le problème c'est que je n'arrive pas à savoir ensuite si le tableau est vide :
    isEmpty renvoie false
    Ubound renvoie "incompatibilité de types"
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    If IsEmpty(tEnregistrements) then
        tEnregistrements = tEnregistrement
    Else
        tEnregistrements = MergeTableaux(tEnregistrements, tEnregistrement) 'fonction de jonction de tableaux qui plante suite à Erase (elle utilise UBound)
    End if
    If UBound(tEnregistrements, 1) >= 50000 then 'Délestage mémoire
        sh.Cells(Rows.Count, 1).End(xlUp).Resize(UBound(tEnregistrements, 1),Ubound(tEnregistrements, 2)) = tEnregistrements
        Erase tEnregistrements
        ThisWorkbook.Save
    End if
    ...
    Merci !

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Join(tEnregistrements, "")) = 0 Then MsgBox "tEnregistrements est vide"

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    ah yes merci !
    Je savais qu'il y avait un truc simple

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    oui tu peut aussi tester le nombre d'item
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iff ubound(tablo)=0 then
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    @Patricktoulon : Hé non justement.....
    Comme indiqué dans le post de départ :
    Ubound renvoie "incompatibilité de types"

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour, bonjour !

    cerede2000, ta fonction déclenche une erreur avec une variable tableau à deux dimensions !

    letienne, voici deux autres méthodes :

    • soit via une classique fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function IsArrayEmpty(V) As Boolean
             On Error Resume Next
                        U = UBound(V)
             IsArrayEmpty = U = "" Or U < 0
    End Function

    • soit en affectant directement (ou après l'Erase si vraiment nécessaire) une matrice vide : Variable = Split("")

    Donc là si UBound(Variable) < 0 alors la matrice est vide, cqfd !

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/11/2006, 12h36
  2. Comment détecter si une session Windows est ouverte?
    Par yosthegost dans le forum Delphi
    Réponses: 3
    Dernier message: 23/05/2006, 17h42
  3. Détecter si une variable Integer est vide..
    Par mickael.be dans le forum Langage
    Réponses: 4
    Dernier message: 19/02/2006, 10h34
  4. Réponses: 3
    Dernier message: 03/01/2006, 18h04
  5. Comment détecter si un tableau est vide ?
    Par ErPi dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 18h50

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