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 :

Variable Dynamique en VBA pour Débutant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut Variable Dynamique en VBA pour Débutant
    Bonjour a tous
    Et tout d'abord merci a cette communauté pour l'aide apportée

    Voici mon soucis, je connais un peu la prog en php et je sais qu'il est possible dans ce langage de créer des variables dynamiques, dont le nom change en fonction d'une valeur incrementée par exemple.
    Aprés des recherches infructueuses sur google et sur votre forum (j'ai vu des choses qui semblait proche de mon pb...mais je ne l'ai ai pas vraiment compris ) je ne vois que cette bouteille a la mer a vous lancer.

    Je cherche a faire qq chose sur VBA dans ce genre...Mais marche pO

    Je voudrait faire des "rechercher/remplacer" dans une feuille excel de facon dynamique (par l'intermediaire d'un "while" ou d'un "for") en fonction de la valeur incrémentée :

    Ci dessous un exemple de ce que je cherche a faire et qui (je le sais) ne marche pas:



    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
    Dim Titre1, Titre2, Titre3 As String
    Dim Newtitre1, Newtitre2, Newtitre3 As String
    Dim i As Integer
    
    Titre1 = "COL1"
    Titre2 = "COL2"
    Titre3 = "COL3"
    
    Newtitre1 = "NEWCOL1"
    Newtitre2 = "NEWCOL2"
    Newtitre3 = "NEWCOL3"
    
    For i = 1 To 3
        Cells.Find(What:="Titre" & i, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
        ActiveCell.Replace What:="Titre" & i, Replacement:="Newtitre" & i, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
    donc plus simplement je souhaite savoir comment faire pour que mon "Titre" & 1 soit considéré comme ma variable Titre1 et donc considéré comme COLS1

    Facile non !!

    J'espere etre assez clair dans mon explication.Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 95
    Par défaut
    Salut,

    j'ai eu le même genre de problème il y a peu et j'ai utilisé une méthode efficace (bien que pas très jolie en programmation).

    Tu crées 2 tableaux de string à 3 cases: Titre et newtitre. Et tu remplis les cases avec les valeurs. Ensuite, tu accèdes au contenu des cases grâce à ta boucle.

    A tester...

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Tu peux utiliser un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim Titres()
     
        Titres = Array("Col1", "Col2", "Col3")
        'L'index du 1er element est egal à 0
     
        For i = 1 To 3
            Cells.Find(What:=Titres(i - 1), After:=ActiveCell, LookIn:=xlFormulas, LookAt _
                :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                False, SearchFormat:=False).Activate
        Next
    Cordialement,

    Tirex28/

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Hello a tous.

    Merci pour ces deux réponses je test ca asap et je vous dis

    Par contre si qq connait une méthode pour l'utilisation de "variable dynamique" je suis preneur"...

    Merci d'avance a tous.

    TchO

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Un petit coup d'oeil à la méthode Evaluate...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Comprend pas..
    Un petit coup d'oeil à la méthode Evaluate...
    Ca marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub evaluation()
        Dim Titre1 As String, i As Integer
        Titre1 = "COL1"
        i = 1
        MsgBox Evaluate("Titre" & CStr(i))
    End Sub
    Cordialement,

    Tirex28/

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Regarde , tu as tout en détail.
    Tu peux aussi te créer tes variables de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Collection_Créer()
     Dim MaCollect  As New Collection
        ' Rempli la collection
        MaCollect.Add "Et alors ? ", "Un"
        MaCollect.Add "C'est ", "Deux"
        MaCollect.Add "quoi ", "trois"
        MaCollect.Add "ton problème ?", "Quatre"
        'Affichage
        MsgBox MaCollect("Un") & MaCollect("Deux") & MaCollect("trois") & MaCollect("Quatre")
    End Sub
    En remplaçant "Un", "Deux", etc., par le nom que tu souhaites leurs donner, tu as autant de variables que tu veux. Pour les utiliser, tu mets simplement MaCollect(LeNom)

  8. #8
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 12
    Par défaut
    Bonjour à tous,

    Le systéme de l'array fonctionne bien.....

    Par contre comme demandé au dessus, je reste preneur pour une leçon sur la variable dynamique.
    Donc je ne met pas résolu tout de suite ... j'attend 2 jours et aprés je clot mon post.

    Encore merci à tous.

    TchO

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

Discussions similaires

  1. [XL-2010] Langage vba pour débutant ?
    Par willoweiss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/10/2012, 10h12
  2. Cours VBA pour débutant
    Par tariqfcb dans le forum Général VBA
    Réponses: 1
    Dernier message: 17/07/2008, 12h47
  3. Menu dynamique en VBA pour Access 2003
    Par petitbison dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/04/2008, 14h22
  4. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 16h35
  5. [VBA-A] VBA pour débutant
    Par a2line dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/05/2006, 14h51

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