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 :

Suppression de colonne - Boucle infinie


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Par défaut Suppression de colonne - Boucle infinie
    J'aimerais supprimer toute les colonnes contenant des informations situées après la colonne "Q" pour cela j'ai écrit le petit bout de programme suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While Range("Q:Q").Select <> Empty
            Selection.Delete
    Loop
    Je me suis dit que lorsque la colonne "Q" sera vide le programme arrètera de boucler (<> Empty) , ... Ben non

    en l'exécutant je vois petit les colones se décaler est se "supprimer" mais lorsque la dernière colone est effacée : ca continue à boucler !!

    Merci pour toute aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    c'est balot hein
    en fait quand tu suprime la colonne Q, il prend la colonne R, il la décale vers la gauche,.......et il l'appelle Q
    en outre si tu regarde la valeur de ta condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Q:Q").Select <> Empty = vrai
    mais si tu essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Q:Q").Select = Empty
    tu t'apercevra qu'elle est aussi égale a vrai
    et par contre j'ai essayé
    et là ça passe pas, incompatiblité de type


    en fait avec l'enregistreur de macro, tu aurais pu obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Macro1()
        Columns("Q:Q").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.ClearContents
    End Sub
    qui est bien plus rapide qu'une boucle
    et l'améliorer en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub Macro1()
        Range(Columns("Q:Q"), Selection.End(xlToRight)).ClearContents
    End Sub
    voila, voila

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Par défaut encore une petite question
    Super! Ce que vous m'avez donné marche parfaitement !

    Mais j'abouse encore de votre temps, je voudrais savoir, savez-vous pourquoi même en ayant supprimer toutes les colonnes après la "Q" le barre de déplacement horizontale continue a rester grande, alors quel devrais se réduire ?

    je sais pas si tu saisis ce que je dit (je suis pas très claire)

    en gros j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla                                                                                                                                                                                                   .
    Alors que je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla
    Avez vous une idée ?

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Soit ta sélection contient encore des formats de nombre (ou de texte) ou autre attributs, soit c'est simplement parce que les cellules vides sont là, tout simplement. Tu peux toujours les masquer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro1()
        Dim maSelection As Range
        maSelection = Range(Columns("Q:Q"), Selection.End(xlToRight))
        maSelection.Clear  ' à la place de ClearContents
        maSelection.EntireColumn.Hidden = True
    End Sub

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    je viens d'essaer, ce n'est pas un probleme, c'est comme ça. essaye avec un fichier quelquonque. tu colle une dizaine de colonne de donnée puis encore, tu verra ta barre ss'agrandir, puis tu efface celles du bout et tu t'apercevra que la barre ne diminue pas

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Citation Envoyé par alsimbad
    je viens d'essaer, ce n'est pas un probleme, c'est comme ça. essaye avec un fichier quelquonque. tu colle une dizaine de colonne de donnée puis encore, tu verra ta barre ss'agrandir, puis tu efface celles du bout et tu t'apercevra que la barre ne diminue pas
    Citation Envoyé par zazaraignée
    [...]Tu peux toujours les masquer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro1() 
        Dim maSelection As Range 
        maSelection = Range(Columns("Q:Q"), Selection.End(xlToRight)) 
        maSelection.Clear ' à la place de ClearContents 
        maSelection.EntireColumn.Hidden = True 
    End Sub
    T'as bien vu la dernière ligne avant le End Sub ? Avec ça, ça marche.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    désolé zaza, quand j'ai dis que j'avais essayé, je parlais du soucis de tomme. bon, j'ai essayé ton code, c'est sur que ça marche pour la scrollbar, mais c'est quand même moyen comme solution que de masquer les colonnes. pas facile a gerer pour la suite, d'autant plus que si tu le remet en visible, la barre redvient aussi grande

  8. #8
    Membre averti
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Par défaut Pas raiment résolue mais c'est pas grave
    J'ai essayé ce que tu m'a donné Zaza, je n'ais pas réussit à le faire marcher, j'avais une erreur parlant de boucle while , je sais pas vraiment d'où ca vien.

    Mais c'est pas grave, c'est qu'un détail


    Merci à tous pour votre aide !

Discussions similaires

  1. [Boucle Infinie] pour un menu
    Par NhyMbuS dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2005, 09h14
  2. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 12h10
  3. Réponses: 15
    Dernier message: 24/05/2005, 08h34
  4. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

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