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 :

changer le nom des cases dans des tableaux


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 changer le nom des cases dans des tableaux
    Bonjour tout le monde,

    SVP si quelqu'un pourra détecter pourquoi ce code ne fonctionne pas,
    (il ne m'affiche pas l'erreur mais il n'effectue pas le changement de nom)

    en fait j'ai un useform ou l'utilisateur va choisir à partir d'une liste combobx une zones qu'il va changer de nom, et puis la condition est si la valeur de combox 1 = une valeur de cellule des six Tableau[zones] alors , le nouvel nom entré dans Textbox2 va remplacer l'ancenne valeur dans les tableaux

    Voilà mon code
    Code vba : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub changer_nom_bouton()
    Worksheets("AuditMensuel").Activate
    For Each v In Range("Tableau1[zones]").Cells
    If v = UserForm5.ComboBox1.Value Then v = UserForm5.TextBox2.Value
    Next v
     
     
    Worksheets("AuditMensuelilot").Activate
    For Each K In Range("Tableau7[zones]").Cells
    If K = UserForm5.ComboBox1.Value Then K = UserForm5.TextBox2.Value
    Next K
     
    Worksheets("AuditMensuelilot").Activate
    For Each U In Range("Tableau6[zones]").Cells
    If U = UserForm5.ComboBox1.Value Then U = UserForm5.TextBox2.Value
    Next U
     
    Worksheets("AuditMensuelilot").Activate
    For Each M In Range("Tableau5[zones]").Cells
    If M = UserForm5.ComboBox1.Value Then M = UserForm5.TextBox2.Value
    Next M
     
     
    Worksheets("AuditMensuelilot").Activate
    For Each N In Range("Tableau4[zones]").Cells
    If N = UserForm5.ComboBox1.Value Then N = UserForm5.TextBox2.Value
    Next N
     
    Worksheets("AuditMensuelilot").Activate
    For Each P In Range("Tableau3[zones]").Cells
    If P = UserForm5.ComboBox1.Value Then P = UserForm5.TextBox2.Value
    Next P
     
    End Sub

    merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Ajoute :

    et fais pareil pour les variables U, M, N etc. Tu peux d'ailleurs te servir de la même variable pour toutes les boucles.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut Explication
    Bonjour,

    Explication : Comme tu n'as pas déclaré tes variables (comme l'a indiqué Daniel), ta variable V, par exemple, est de type Variant (par défaut), et prend en cours de route le type Range puis String comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each v In Range("Tableau1[zones]").Cells
    MsgBox TypeName(v) 'vérification : le type est bien Range... par contre :
    If v = UserForm5.ComboBox1.Value Then v = UserForm5.TextBox2.Value : MsgBox TypeName(v) 'Si la condition est remplie, tu assignes la valeur de la TextBox à v, qui devient donc une String et plus Range...
    Next v
    Pour contrer ce problème, le mieux est BIEN SÛR de déclarer préalablement le type de la variable avec le fameux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim v as Range 'à insérer au début du code
    mais ceci fonctionnerait aussi (et je te recommande de le faire même si tu as déclaré la variable) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'Dim v as Range '(fais-le quand-même, je l'ai mis en remarque pour montrer que ça marche même sans)
    For Each v In Range("Tableau1[zones]").Cells
    If v.text = UserForm5.ComboBox1.text Then v.value = UserForm5.TextBox2.text : MsgBox TypeName(v) 'Le type restera Range :)
    Next v
    Voilà, j'espère que ça t'aura éclairé !

    Quentin

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

Discussions similaires

  1. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  2. [algo non récursif] mettre des "trucs" dans des "cases"
    Par Seb.26 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 24/09/2009, 10h59
  3. Réponses: 4
    Dernier message: 30/05/2006, 17h21
  4. Réponses: 4
    Dernier message: 19/09/2005, 15h59
  5. taille dynamique des cases dans état
    Par exter666 dans le forum Access
    Réponses: 14
    Dernier message: 09/09/2005, 15h30

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