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 :

Ajouter et changer le nom d'un élément dans un tableau


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
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Par défaut Ajouter et changer le nom d'un élément dans un tableau
    Bonjour tout le monde,


    Pourriez vous m'aider à corriger le code de macro qui permet de changer et d'ajouter un élément dans un tableau ?

    ci joint le classeur

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En premier lieu, tu expliques clairement tes besoins ensuite, tu postes le code si tu en as un et seulement si au fil de la discussion on se trouve bloqué, tu peux poster un fichier mais pas dans ton 1er message et surtout avec ce type d'explication voulant dire "faites le travail et retournez moi le classeur" :
    Pourriez vous m'aider à corriger le code de macro qui permet de changer et d'ajouter un élément dans un tableau ?
    Je ne suis pas sûr que seront nombreux ce qui vont ouvrir ton classeur surtout un classeur avec macro !

    Je t'encourage a formuler clairement ton problème et poster le code entre les balises # (Code)

    Hervé.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Par défaut
    Excusez moi mais c'est juste parceque je ne connais pas la règle exacte d'appeler un tableau dans VBA , j'appelais avant la colonne exacte avc Range ("B6:B") par exemple

    J'ai un userform ou j'aimerai bien insérer un nouvel élement dans TextBox et qu'il me l'ajoute dans le tabelau en cliquant sur CommandButton1:

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub CommandButton1_Click()
    TextBox1.AddItem Sheets("Feuil1").Range("Tableau1[Zone]")
     
    End Sub

    *Nom du tableau : Tableau 1
    Nom de la colonne dans laquelle je veux insérer le nouvel lément : Zone

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    L'objet TextBox ne possède pas de méthode "AddItem" cette méthode est propre aux ComboBox ou ListBox.
    Si tu utilise une Liste, c'est la collection "ListObjects" qu'il faut utiliser. Un exemple, pour récupérer une valeur dans la liste et l'affecter au TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Click()
     
        'pour mettre dans le TextBox la valeur contenue dans la dernière cellule de la première colonne de la liste
        With Sheets("Feuil1").ListObjects("Tableau1")
     
            TextBox1.Text = .DataBodyRange.Cells(.DataBodyRange.Rows.Count, 1).Value
     
        End With
     
    End Sub
    et son inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub CommandButton1_Click()
     
        'ajoute la valeur du TextBox dans la liste dans la première colonne et première ligne vide
        'ce qui a pour effet de redimensionner la liste
        With Sheets("Feuil1").ListObjects("Tableau1")
     
            .DataBodyRange(.DataBodyRange.Rows.Count + 1, 1).Value = TextBox1.Text
     
        End With
     
    End Sub
    Hervé.

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Par défaut
    Merci beaucoup Theze

    juste une autre modeste question si c'est possible
    pour le deuxième code
    j'aimerai bien ajouter une condition et dire

    if textbox1.value existe déjà dans la DataBodyRange.Rows liste then
    MsgBox("ce nom existe déjà")
    else
    do lo code

    je m'excuse et merci beaucoup

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Regarde si ça te convient et adapte :
    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
    20
    21
    22
    23
    24
    25
    26
     
    Private Sub CommandButton1_Click()
     
        Dim Cel As Range
     
        With Sheets("Feuil1").ListObjects("Tableau1")
     
            'effectue la recherche sur la 1ère colonne de la liste
            Set Cel = .DataBodyRange.Columns(1).Find(TextBox1.Text, , xlValues, xlWhole)
     
            'si trouvé, message sinon, ajout
            If Not Cel Is Nothing Then
     
                MsgBox "Ce nom existe déjà dans la liste, il ne sera pas rajouté !"
     
            Else
     
                'ajoute la valeur du TextBox dans la liste dans la première colonne et première ligne vide
                'ce qui a pour effet de redimensionner la liste
                .DataBodyRange(.DataBodyRange.Rows.Count + 1, 1).Value = TextBox1.Text
     
            End If
     
        End With
     
    End Sub
    Hervé.

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

Discussions similaires

  1. Macro pour ajouter un nouvel élément dans un tableau
    Par dudu134 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/02/2007, 16h31
  2. [Tableaux] ajout d'éléments dans un tableau
    Par maysa dans le forum Langage
    Réponses: 7
    Dernier message: 06/11/2006, 10h09
  3. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29
  4. [Tableaux] ajout d'élément dans un tableau
    Par maximenet dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2006, 20h24
  5. Changer le "Nom de l'image" dans l'onglet processu
    Par Thomas1434 dans le forum Windows
    Réponses: 1
    Dernier message: 24/02/2006, 04h07

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