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 :

[VBA E]effacement plage de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 482
    Points : 161
    Points
    161
    Par défaut [VBA E]effacement plage de cellule
    bonjour a tous

    je voudrais par rapport au code ci dessous le modifier pour pouvoir effacer plusieur lignes ed la cellule 1 à 14 suivant une selection manuelle verticale de plusieurs cellules aleatoire dans un tableau sur une colonne mais sur plusieurs lignes continues.

    Pour l'instant le code si dessous ne peut effacer que la ligne selectionnée de la cellule 1 à 14, ou si plusieurs cellules sont selectionnées verticalement seulement la premiere est effacé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub efface()
     
     Dim t As Variant
     
     ActiveCell.EntireRow.Select
     ActiveCell.Offset(0, 0).Select
     
     t = ActiveCell.Address
     
     Range(t, Range(t).Offset(0, 14)).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
    Range(t, Range(t).Offset(0, 14)).SpecialCells(xlCellTypeConstants, xlTextValues).ClearContents
     
     End Sub
    Merci d'avance

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Salut,

    Citation Envoyé par zoumzoum59
    je voudrais par rapport au code ci dessous le modifier pour pouvoir effacer plusieur lignes ed la cellule 1 à 14 suivant une selection manuelle verticale de plusieurs cellules aleatoire dans un tableau sur une colonne mais sur plusieurs lignes continues.
    gnein????
    Tu peux me la refaire? Comme si tu causais à un gosse de six ans s'il te plait... (c'est un peu mon niveau intellectuel le week-end...)
    Parce que là, j'ai pas tout pigé...

    Comme base de départ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Range(t, Range(t).Offset(0, 14)).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
    Avec cette ligne, tu effaces le contenu des cellules de la plage spécifiée, à savoir la zone entre la cellule d'adresse "t", et la cellule décalée de 14 colonnes vers la droite.
    A toi de définir ta zone de travail comme tu le souhaites, le "rectangle" définissant la zone étant défini par les deux paramètres que tu passes à Range(...) (le premier est la cellule en haut à gauche, le second la cellule en bas à droite).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre habitué
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 482
    Points : 161
    Points
    161
    Par défaut
    oui je te la refais
    Je sectionne avec la souris sur une ou plusieurs colonnes peu importe mais surtout sur plusieurs lignesune plage de cellules et je veux recuper les adresse des cellules en haut a gauche et en bas à droite correspondant a ma selection en ligne mais en colonne de la 1 à la 14 qui n'a pas eforcement ete selectionné, pour effacer les valeurs numerique et texte de cette plage sans effacer les formules.

    mais avec le code precedent, Je n'arrive que a selectionner et effacer la premiere ligne.

    Et je ne vois pas comment le developper pour qu'il fonctionne sur plusieurs lignes selectionner au prealable.

    J'espere que ç passe mieux comme ça !

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Ok...
    Alors, vu que je ne suis pas sûr d'avoir toutes les hypothèses, je vais poser les miennes:
    1. tu sélectionnes une plage continues sur ta feuille excel (n lignes, p colonnes), en partant du coin haut gauche vers le coin bas droit
    2. tu veux nettoyer les cellules sur toute la hauteur de la zone sélectionnée, mais en allant des colonnes 1 à 14 (la colonne 1 étant celle de la première cellule sélectionnée, donc le coin haut gauche)
    Une fonction qui peut t'aider, c'est:
    qui va te retourner le nombre de lignes de ta sélection

    Il ne te reste plus qu'à adapter la zone de nettoyage dans ta macro précédente, en règlant l'offset sur le nombre de lignes:

    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
    Sub efface()
     
     Dim t As Variant
     
     ActiveCell.EntireRow.Select     
     ActiveCell.Offset(0, 0).Select 
     
     t = ActiveCell.Address
     
    nb_lignes=Selection.Rows.Count
     
     Range(t, Range(t).Offset(nb_lignes, 14)).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
    Range(t, Range(t).Offset(nb_lignes, 14)).SpecialCells(xlCellTypeConstants, xlTextValues).ClearContents
     
     End Sub
    Ca devrait tourner, si j'ai pas fait de boulette... (j'ai pas excel sous la main, je fais de tête..)

    Alors après, attention si la cellule active n'est pas la cellule en haut à gauche de la sélection... ça va décaler... il faudrait rentrer plus dans le détail pour gérer ces cas particuliers.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre habitué
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 482
    Points : 161
    Points
    161
    Par défaut
    Merci plegat

    Ton code et exactement ce que je cherchais pourtant je connais rows.count mais j'ai pas le reflexe de l'utiliser.

    par contre je l'ai juste modifié comme cela car la variable nb_lignes restait à 1

    Sub efface()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim t As Variant
     
    nb_lignes=Selection.Rows.Count
     
     ActiveCell.EntireRow.Select     
     ActiveCell.Offset(0, 0).Select 
     
     t = ActiveCell.Address
     
     Range(t, Range(t).Offset(nb_lignes, 14)).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents
    Range(t, Range(t).Offset(nb_lignes, 14)).SpecialCells(xlCellTypeConstants, xlTextValues).ClearContents
     
     End Sub

  6. #6
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par zoumzoum59
    par contre je l'ai juste modifié comme cela car la variable nb_lignes restait à 1
    Bien vu.
    J'ai pas encore tout à fait fini d'exterminer la horde de microbes qui m'ont pris d'assaut ce week-end, ça me perturbe les neurones!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. [VBA-E] exporter plage de cellules en gif
    Par greg778 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/09/2007, 17h23
  2. [VBA-Excel] - protection plage de cellule sur i feuilles
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/02/2007, 16h52
  3. [VBA-E]Selection plage de cellules variable
    Par julien5 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 14h51
  4. [VBA] Copier une plage de cellules dans un fichier fermé
    Par SFrane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52
  5. [VBA] Parcourir une plage de cellule
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2005, 08h18

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