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 :

Supression des colonnes avec valeur <Nul> [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut Supression des colonnes avec valeur <Nul>
    Bonjour,

    Je voudrais supprimer de mon tableau sélectionné toutes les colonnes qui ont la valeur <Nul> pour toutes les lignes. Sachant que la première ligne contient les noms des colonnes.

    J'ai trouvé un code que j'ai essayé d'adapter en vain. Je ne sais pas quel est le rôle de CountA().
    Comment je peux spécifier que je ne veux traiter que le tableau sélectionné et pas tout le document ?

    Pourriez-vous m'aider à corriger le code s'il vous plaît ?

    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
     
    Dim i As Long, iLimit As Long
       iLimit = ActiveSheet.UsedRange.Rows.Count
      Application.ScreenUpdating = False    'à quoi sert cette ligne ?
      Application.Calculation = xlCalculationManual    'à quoi sert celle-là ?
      For i = iLimit To 2 Step -1
        If Application.CountA(cells(i, 2).EntireColumn) = 0   Then
            'J'ai mis cells(i,2) pour ne pas compter la ligne des noms de colonnes 
           Cells(i, 1).EntireColumn.Delete
        End If
      Next i
      Application.Calculation = xlCalculationAutomatic 'quel est le rôle de cette ligne ?
       Application.ScreenUpdating = True
       iLimit = ActiveSheet.UsedRange.Rows.Count   '??
       ActiveWorkbook.Save

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas quel est le rôle de CountA().
    CountA est l'équivalent de la formule NBVAL de la version française d'excel.
    NBVAL(A2:A10) Renvoie le nombre de cellules qui ne sont pas vides dans la plage A2:A10

    Bonjour,
    Application.ScreenUpdating = False 'à quoi sert cette ligne ?
    Application.Calculation = xlCalculationManual 'à quoi sert celle-là ?
    Ce sont des instructions qui permettent d'accélérer l'exécution du Code VBA.
    La première ligne désactive la mise à jour de l'écran, la deuxième ligne désactive le recalcul automatique.

    Bonjour,
    J'ai réadapter le code et j'ai placé la propriété interior.colorindex = 4 à la place de la méthode delete ainsi que la mise en remarque de ActiveWorkbook.Save pour permettre de faire un test sans risque.
    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
     Dim c As Long
     Dim rLimit As Single, cLimit As Single
     Dim cel As Range
     With ActiveSheet.UsedRange
     cLimit = .Columns.Count ' Nombre de colonnes
     rLimit = .Rows.Count ' Nombre de lignes
     End With
     Application.ScreenUpdating = False
     Application.Calculation = xlCalculationManual
     For c = cLimit To 1 Step -1
      If Application.CountA(Range(Cells(2, c), Cells(rLimit, c))) = 0 Then
       Range(Cells(2, c), Cells(rLimit, c)).EntireColumn.Interior.ColorIndex = 4 ' Colorie en vert la colonne vide
      End If
     Next
     Application.Calculation = xlCalculationAutomatic 'quel est le rôle de cette ligne ?
     Application.ScreenUpdating = True
     ' ActiveWorkbook.Save
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Je vous remercie pour le code. Sauf que dans mes cellules vides, il est écrit <Nul>. Je peux faire que le <Nul> soit 0.0 mais je ne peux pas faire que les cellules soient littéralement vides. Le tableau est généré suite à une requête SQL.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il suffit d'adapter le code en utilisant par exemple la fonction CountIf
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Par défaut
    Je suis désolé de vous embêter mais c'est la première fois que j'utilise des macros XL. Lorsque j'essaie d'exécuter une macro j'ai un message : les macros de ce classeir sont désactivées car le niveau de sécurité est élevé et les macros n'ont pas été signées numériquement ou vérifiées comme étant sûres.
    J'ai dû manquer une étape lors de la création de la macro.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est le niveau de sécurités des macros qui est trop élevé.
    Version 2003 - Outils/Macro/Sécurité... et coché Niveau de sécurité moyen
    Version 2007 - Cliquer sur le bouton Sécurité des macros du groupe Code de [l'onglet Développeur] et sélectionner Désactiver toutes les macros avec notification.
    Pour 2010 je pense que c'est pareil mais ma machine n'est pas branchée et je ne peux pas vérifier.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [Toutes versions] Supprimer des colonnes avec MACRO dont les valeurs sont utilisées
    Par info009 dans le forum Excel
    Réponses: 2
    Dernier message: 06/05/2014, 14h43
  2. Réponses: 3
    Dernier message: 03/04/2009, 12h39
  3. Supprimer une colonne avec valeurs par défaut
    Par SlashOwnsU dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/09/2006, 10h10
  4. Peut-on faire des colonnes avec "div"
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/07/2006, 06h56
  5. Réponses: 13
    Dernier message: 12/01/2006, 10h45

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