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 une colonne d'une feuille si elle est vide dans une autre


Sujet :

Macros et VBA Excel

  1. #1
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut Supprimer une colonne d'une feuille si elle est vide dans une autre
    Bonjour,

    Me revoilà pour vous demander de l'aide à nouveau:

    J'ai deux feuilles dans un classeur excel qui contiennent chacune les mêmes colonnes au départ.
    La première feuille est ensuite remplie avec des données en colonne.
    A ce stade, j'aurai besoin de supprimer dans la seconde feuille les colonnes pour lesquelles il n'y a pas de données dans la première feuille.

    Un petit exemple:
    Feuille 1:
    Nom Prénom Adresse Tél
    DUPOND Jerome rue d'ici
    DURANT Pascal Pas là
    La feuille 2 a la même structure mais pas de données:
    Nom Prénom Adresse Tél
    Or dans la feuille 1 la colonne Tél est vide, donc je voudrai carrément modifier la structure de la Feuille 2 pour qu'elle devienne:

    Nom Prénom Adresse
    Vous pouvez me dire comment faire ça en VBA?


  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub SuppColonne()
        'Si la colonne ne contient qu'une valeur (le titre)
        If WorksheetFunction.CountA(Worksheets("Feuil1").Columns(4)) = 1 Then
            'On supprime le contenu et le formats
            Worksheets("Feuil2").Columns(4).Clear
            'Ou on supprime les cellules
            'Worksheets("Feuil2").Columns(4).EntireColumn.Delete
        End If
    End Sub
    A adapter bien sur.

    Cordialement,

    Tirex28/

  3. #3
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Super, merci Tirex, je vais de ce pas l'adapter et voir ce que ça donne

  4. #4
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Alors voilà ce que ça donne adapté à mon cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SuppColonne()
        NB_COL = 7
        For i = 1 To NB_COL
            'Si la colonne ne contient qu'une valeur (le titre)
            If WorksheetFunction.CountA(Worksheets("Feuil1").Columns(i)) = 1 Then
                'On supprime le contenu et le formats
                Worksheets("Feuil2").Columns(i).Delete
                'Ou on supprime les cellules
                'Worksheets("Feuil2").Columns(4).EntireColumn.Delete
            End If
        Next i
    End Sub
    Ca marche pas mal, y ajuste un petit truc qui coince, ce que je vais essayer d'expliquer avec un exemple:

    Mail Nom Pré Adr Tel
    dupond Jérôme rue d'ici
    Durant Pascal Pas là
    Albert Jean 2 rue
    Dans cet exemple les colonnes mail et Tel sont vides, je m'attends donc à ce qu'après exécution de la macro il ne me reste que les colonnes Nom Prénom et Adresse
    Or voilà ce il me reste: Nom Prénom Adresse Tél

    [Edit]
    En fait c'est même plus sioux que ça...

    J'ai passé NB_COL à 10 et j'ai ajouté des colonnes dans la deuxième feuille

    exemple: Mail Nom Prénom Adresse Tél col6 col7 col8

    Quand j'exécute la macro, il me reste:
    Nom Prénom Adresse Tél col7 col8

    [/Edit]

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comme ton code supprime la colonne, j'écrierais la procédure autrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SuppColonne()
        NB_COL = 7
        For i = NB_COL  To 1 step -1
            'Si la colonne ne contient qu'une valeur (le titre)
            If WorksheetFunction.CountA(Worksheets("Feuil1").Columns(i)) = 1 Then
                'On supprime le contenu et le formats
                Worksheets("Feuil2").Columns(i).Delete
                'Ou on supprime les cellules
                'Worksheets("Feuil2").Columns(4).EntireColumn.Delete
            End If
        Next i
    End Sub
    Sinon, tu sauteras des colonnes

  6. #6
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Merci, c'est bien ce qui se passait je sautai des colonnes mais je n'ai aps encore le résultat escompté, voilà ce que j'obtiens:

    Mail Nom Prénom Adresse Tél col6 col7 col8

    col 6, 7 et 8 n'ont pas été supprimées....

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour Col8, ça, j'ai compris... avec NB_COL = 7, tu n'iras pas à 8...
    Mets donc =10 et teste de nouveau. Je soupçonne que tu as une colonne 9 qui contient quelque chose... ou alors, supprime manuellement toutes les colonnes à droite de la dernière colonne de ta plage. Après tu exécutes la macro. Juste pour tester.
    Tu dis
    A+

  8. #8
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    J'avais déjà mis à 10 (c'est précisé plus haut )

    Par contre, j'ai fait comme tu m'as dit et supprimé toutes les colonnes à droite de ma dernière colonne et j'ai relancé la macro, j'obtiens toujours ceci:

    Nom Prénom Adresse col6 col7 col8

    Je te remet le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SuppColonne()
        NB_COL = 10
        For i = NB_COL To 1 Step -1
            'Si la colonne ne contient qu'une valeur (le titre)
            If WorksheetFunction.CountA(Worksheets("Feuil1").Columns(i)) = 1 Then
                'On supprime le contenu et le formats
                Worksheets("Feuil2").Columns(i).Delete
                'Ou on supprime les cellules
                'Worksheets("Feuil2").Columns(4).EntireColumn.Delete
            End If
        Next i
    End Sub
    [Edit]
    Je pense avoir trouvé, ce doit être parce que j'ai plus de colonnes dans la Feuille 2 que dans la 1, je teste...
    [/Edit]

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Remplace
    Worksheets("Feuil2").Columns(i).Delete
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Worksheets("Feuil2").Columns(i).entireColumn.Delete
    (pas testé)

  10. #10
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Non, c'est bon, c'est bien parce que j'avais plus de colonnes dans la feuille 2 que la 1

    Merci à vous 2 pour votre aide, sans vous j'y aurai passé l'après-midi


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2012, 15h46
  2. [XL-2003] Supprimer des cellules vides dans une colonne
    Par floctc dans le forum Excel
    Réponses: 6
    Dernier message: 08/12/2009, 13h32
  3. [Toutes versions] supprimer des cases vides dans une colonne
    Par vivi4561 dans le forum Excel
    Réponses: 2
    Dernier message: 09/09/2009, 23h14
  4. nb de cellule vide dans une colonne?
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2008, 11h22
  5. Réponses: 7
    Dernier message: 06/06/2007, 14h42

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