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 :

Restreindre la fonction clearcontent_sol: current.region [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    controleur de gestion
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : controleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Par défaut Restreindre la fonction clearcontent_sol: current.region
    Bonjour,
    je viens a vous pour question classique mais j'arrive pas a trouver la solution dans le brouhaha du forum :-)

    je voudrais effacer le contenu de ma feuille a partir de A6 afin de l'initialiser pour un filtre avance
    Pour cela j' utilise le code suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'II) clear sheet before
     
    If Range("a6:A6") <> " " Then
     
    Range("a6:f" & dernligne).ClearContents
    Else: Exit Sub
    End If

    Cela fonctionne bien quand effectivement, ma feuille contient des donnees, mais si la cellule est vide, la macro me supprime les titres et donc cela bloque a la ligne du filtre.


    Quelle function de VBA que je ne connais pas encore?




    Edit pour les courageux de passage,

    La solution (donnee par Rdurupt) est la suivante




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Range("A6").CurrentRegion.Rows.Count > 6 Then
    Range("a6:f" & dernligne).ClearContents
    End If
    Si vous avez des donnees dans d'autres cellules adjacentes, adaptez le chiffre (ligne 1 du code) avec cette methode
    Fais cette manip dans vb ouvre la fenêtre d'exécution raccourci clavier [Ctrl] + [G] exécutes cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?range("A6").currentregion.rows.count
    et appuis sur la touche [enter] tu pourras lire la valeur du count!

    La solution (donnee par Phillipe) est la suivante, tenant compte des entetes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
     Dim Rng As Range
     Set Rng = Range("A5").CurrentRegion
     With Rng
     .Offset(1).Resize(.Rows.Count - 1).ClearContents
     End With
     Set Rng = Nothing
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if range("A6").currentregion.rows.count>1 then Range("a6:f" & dernligne).ClearContents

  3. #3
    Membre confirmé
    Femme Profil pro
    controleur de gestion
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : controleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Par défaut
    merci prof! une nouvelle function a mes connaissances

    du coup, j'ai fait mes devoirs sur le currentregion: et par extention le UsedRange

    Pour la definition: http://www.excel-easy.com/vba/exampl...entregion.html
    Pour l'usage possible: http://www.info-3000.com/vbvba/selec...ioncellule.php




    Le current region fonctionne pas dans le cas present car, la macro m'efface toujours ma ligne d'en-tete situee en A5:E5, lorsqu'il y a rien en A5
    je vais tester le Used range mais j'ai des cellules remplies notamment pour le titre de la feuilles, donc je pense pas que ce soit la bonne methode

    Une solution serait de remettre les en-tetes après avoir re-initialiser...mais j'aimerai bien avoir le fin mot du clearcontent

  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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le current region fonctionne pas dans le cas present car, la macro m'efface toujours ma ligne d'en-tete situee en A5:E5
    C'est normal puisque la propriété CurrentRegion (équivalent d'un Ctrl + *) englobe toute la plage.
    Pour ne prendre que les données, il faut rectifier avec les propriétés Offset et Resize
    Mon PC étant en train de faire une mise à jour des nouvelles versions, je ne peux donner un exemple que non testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Rng as Range
    Set Rng = Range("A5").CurrentRegion
    With Rng
     .Offset(1).Resize(.Rows.Count-1).ClearContent
    End With
    Set Rng = Nothing
    J'ajouterais que pour éviter les problèmes il faut absolument préciser la filiation complète de l'objet Range (Classeur et feuille)
    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
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    le currentregion prend toues les cellules contiguë à la cellule nommée en l’occurrence [A6], maintenant si tu as un valeur en [B5]; [C4];[D3] le count retourne 3 donc il faut évalué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A6").currentregion.rows.count
    fais cette manip dans vb ouvre la fenêtre d'exécution raccourci clavier [Ctrl] + [G] exécutes cette commande ?range("A6").currentregion.rows.count et appuis sur la touche [enter] tu pourras lire la valeur du count!

  6. #6
    Membre confirmé
    Femme Profil pro
    controleur de gestion
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : controleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Par défaut
    A la vitesse a laquelle vous repondez je ne peux aue vous dire merci
    car meme si j'etais sur la bonne voie avec l'aide d'office https://msdn.microsoft.com/fr-fr/lib.../ff196678.aspx
    mous m'epargner des heures de batailles...
    je teste vos solutions tout de suite

    Edit

    @Philippe malgre les precautions d'usage, j'ai une
    erreur "438, l'objet ne supporte pas cette propriete ou cette methode"
    a la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Offset(1).Resize(.Rows.Count-1).ClearContent
    @rdurupt après avoir compris qu'evidemment il fallait que la cellule A6 contienne une valeur, ce bout de code cela fonctionne parfaitement

  7. #7
    Invité
    Invité(e)
    Par défaut
    maintenant tu peux toujours évaluer la valeur de dernligne car si tu ne dispose pas de valeur en [A6] le dernligne devrait ce situer sur la ligne 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if dernligne>=6 then msgbox "c'est bon"

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

Discussions similaires

  1. SSH : restreindre la fonction TcpForwarding
    Par winnie82 dans le forum Sécurité
    Réponses: 2
    Dernier message: 04/11/2013, 14h40
  2. for each sur current region
    Par margault dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/07/2010, 14h58
  3. compter nb lignes Current region
    Par Nako_lito dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2010, 11h13
  4. 5BO 5.1.9] Restreindre l'accès à certaines fonctions ?
    Par Skirlou dans le forum Administration-Migration
    Réponses: 2
    Dernier message: 18/01/2008, 10h06
  5. #Region dans une procédure ou une fonction
    Par tatone dans le forum VB.NET
    Réponses: 10
    Dernier message: 04/10/2007, 18h57

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