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 :

Commande de suppression de cellule dans un tableau. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 35
    Par défaut Commande de suppression de cellule dans un tableau.
    Bonjour tout le monde,

    Désoler de pourrir le forum avec cette question toute simple mais je n'arrive pas a trouver sur le net une commande de suppression de texte dans les cellules d'un tableau.

    A savoir que : MonTableau.ClearContents supprime tout mon tableau sauf les lignes en bordure de cellule,
    et MonTableau.Clear supprime tout.

    or j'aimerais que la commande supprime juste le texte et rien d'autre (laisser les en-tête etc..).

    Si quelqu'un a une solution je serais heureux qu'il m'en fasse part.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Peut-être une piste en passant par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set MyRng = Range("MonTableau[No de ligne]")
    Set MyRng = MyRng.Offset(1, 0).Resize(MyRng.Rows.Count - 1, 0)
    MyRng.ClearContents

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    mais ton tableau est fixe ?

    Parceque sinon délimité la taille par une range
    type

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 35
    Par défaut
    Merci de m'avoir répondu,

    amnorian : pour votre réponse j'avais essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Range("Tableau2[#All]").Clear
    mais ce code supprimait tout mon tableau. J'ai donc remplacé les cellules à "nettoyer" dans le code que vous m'avez proposé et il l'a fait sans supprimer le tableau de départ

    Au sujet du tableau : c'est un tableau "fixe" cependant j'aurais voulus pouvoir le redimensionner mais je n'arrive pas à savoir comment la commande Redim Preserve fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private sub CommandButtonRedimTableau_Click
    Dim tableau1 as string 
    Dim i as integer
    i = TextBoxRedim
    tableau 1=Sheets("Feuil1").Range("Tableau2[#All]")
    ReDim Preserve tableau1 (i)
    End Sub
    À la zone souligné le programme marque tableau attendu (pourtant je lui est préciser que tableau1 est égal au tableau déjà existant sur le classeur).

    vinc_bilb, J'ai testé votre code mais à la troisième ligne le programme m'envoi "erreur de compilation" : Objet requis.
    (j'ai surligné la zone d'erreur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButtonOui_Click()
    Dim MyRng As String
    Set MyRng = Range("Tableau2[#All]")
    Set MyRng = MyRng.Offset(1, 0).Resize(MyRng.Rows.Count - 1, 0)
    MyRng.ClearContents
    UserFormEffacerTableau.Hide
    End Sub

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    J'ai testé le code suivant qui marche bien (supprime tout sauf le header), à adapter si OK avec le nom de votre tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Efface_TablCont()
     
    Dim MyRng As Range
     
    Set MyRng = Range("TableOrig[#All]")  'On prend toutes les cellules du tableau
    Debug.Print MyRng.Address, MyRng.Rows.Count
     
    Set MyRng = MyRng.Offset(1, 0).Resize(MyRng.Rows.Count - 1, MyRng.Columns.Count) 'On décalle d'une ligne pour enlever le header et on diminue le nombre de ligne de 1
    Debug.Print MyRng.Address
    MyRng.ClearContents
    End Sub

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    un tableau Excel est un objet ListObject en VBA

    il possède des méthodes et des propriétés pour naviguer dedans

    quelques exemples :

    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
    18
    19
    Sub ioi()
    Dim Tablo As ListObject
    Set Tablo = ListObjects("Tableau1")
     
    'DataBodyRange = les données
    With Tablo.DataBodyRange
        ' efface les données et laisse la mise en forme
        '.ClearContents
     
        ' efface les données et la mise en forme
        '.Clear
     
        ' supprime toute la plage du tableau
        ' l'objet tableau est redimensionné
        ' il ne reste que les en-têtes
        '.Delete
    End With
     
    End Sub

    et quelques exemples pour manipuler ça en VBA dans la FAQ : http://excel.developpez.com/faq/?page=Tableau

    Il existe aussi un tuto, mais qui n'aborde pas la manipulation VBA : http://silkyroad.developpez.com/excel/tableau/

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 35
    Par défaut
    Re-boujour,

    Vinc_bilb: j'ai implanté votre code dans mon programme et ça marche parfaitement, Merci beaucoup.

    Joe Levrai: j'ai essayé votre code mais à la ligne listobjects il me le surligne en me marquant Sub ou fonction attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Tableau = ListObjects("Tableau2[#All]")
    Du coup avec les liens que vous m'aviez montré dans le précédant message, je vais tenter de résoudre ce problème de commande de redimension de tableau.

    Merci encore.

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

Discussions similaires

  1. [Débutant] Suppression de ligne dans un tableau de cellules
    Par gegon dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/01/2013, 18h04
  2. [Excel/VBA] Récuperer cellule dans un tableau
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/02/2007, 10h20
  3. [Tableaux] Suppression de lignes dans un tableau
    Par lodan dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2006, 21h08
  4. tailles de cellules dans un tableau
    Par Hayabusa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 05/09/2006, 22h12
  5. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 18h06

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