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

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    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
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    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

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    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
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il suffit d'adapter le code en utilisant par exemple la fonction CountIf

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    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
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    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.

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    cela n'a pas marché. Même avec un niveau de sécurité bas ça marche pas.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    cela n'a pas marché. Même avec un niveau de sécurité bas ça marche pas.
    Qu'est-ce qui ne marche pas. Quel message d'erreur as-tu ?

    Attention : Après avoir modifié le niveau de sécurité, il faut fermer le classeur et puis l'ouvrir. La modification apportée est prise en compte après

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Lorsque je clique sur un bouton auquel j'ai associé le code précédent, j'ai me message d'erreur suivant :
    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. Pour exécuter les macros, vous pouvez les faire signer numériquement ou modifier votre niveau de sécurité.

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    Billets dans le blog
    53
    Par défaut
    J'ai ajouté un commentaire à mon post précédent
    Attention : Après avoir modifié le niveau de sécurité, il faut fermer le classeur et puis l'ouvrir. La modification apportée est prise en compte après

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Merci. Il n'y a plus de problèmes de sécurité.

    Me recommanderiez-vous un tutoriel spécifique qui explique le rôle de chaque fonction et attribut utilisé dans VBA XL ? Je veux juste ce qui est spécifique à XL (API). Je suis déjà initié au VB.

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 928
    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 : 12 928
    Points : 28 922
    Points
    28 922
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Difficile de conseiller la lecture de l'un ou l'autre tutoriel.
    L'ensemble des tutos disponibles sur Developpez.com se trouve disponible à cette adresse mais je suppose que vous connaissez l'adresse.
    Si vous connaissez VB, ce sont les objets, propriétés et procédures événementielles d'excel ou fonctions spécifiques d'excel
    Le sujet est tellement vaste. Je programme depuis plus de 10 ans en VBA Excel et j'apprends encore.
    Mais avant tout pour bien programmer en VBA Excel il faut une bonne connaissance du produit. Beaucoup de personnes font des macros parce-qu'elles ignorent que l'on peut le faire les fonctions d'excel ou à l'aide des outils présents dans le produit.
    La lecture des FAQS est riche d'enseignement aussi.

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Je vous remercie.

+ 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