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 :

Sélectionner un cellule sur base de deux variables [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut Sélectionner un cellule sur base de deux variables
    Bonjour à tous,

    Je souhaite sélectionner une cellule sur base de deux variables.

    J'ai débuté mon code tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    T1 = Application.Match("MS2", Plage, 0)
        T2 = Application.Match("MH3", Plage, 0)
        T3 = Application.Match("MS3", Plage, 0)
     
        Ligne = Me.Test.ListIndex + 7
     
        For I = 1 To 7
                Me.Controls("TextBox" & I) = Ws.Cells(Ligne, "T" & I)
        Next I
    Mon code fonctionne pour la référence de ma ligne mais pas pour ma colonne.
    Je ne sais pas si c'est suffisamment clair, sinon je vais essayer de décrire un minimum mon objectif :

    - j'ai une multitude de TextBox que je voudrais remplir sur base de données issues d'un classeur Excel.

    -> Cells(Ligne, fonctionne mais ("T" & I) me renvoie une erreur. On le devine ou pas mais j'essaie de renvoyer la valeur de T1, puis T2, etc. comme variable pour ma cellule Cells(Ligne, Colonne).

    Auriez-vous svp des idées ?

    D'avance, je vous remercie.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thomanneca Voir le message
    Bonjour,

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For I = 1 To 7
                Me.Controls("TextBox" & I) = Ws.Cells(Ligne, 19 + I)
    Next I

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For I = 1 To 7
                Me.Controls("TextBox" & I) = Ws.Cells(Ligne, 19 + I)
    Next I
    Bonjour Erik,

    Merci pour ta réponse. Je vais tester mais pourquoi 19 pour remplacer "T" ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thomanneca Voir le message
    mais pourquoi 19 pour remplacer "T" ?
    Parce que vous utilisez la notation Cells, que T correspond à la colonne 20, et que votre compteur démarre à 1, faites le calcul.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2013
    Messages : 111
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Parce que vous utilisez la notation Cells, que T correspond à la colonne 20, et que votre compteur démarre à 1, faites le calcul.
    Ok, alors je me suis mal expliqué. Au temps pour moi.

    En fait, ma lettre T ne correspond pas à une colonne mais à une variable.
    Par exemple, T1 = numéro de la colonne contenant les Prénoms : T1 = 3 par exemple -> Cells(Ligne, T1) me renverrait dans ce cas l'adresse d'une cellule à l'intersection de ma ligne 4 (pour autant que Ligne = 4) et de la colonne 3.

    J'espère que c'est plus clair ainsi.

    Devrais-je, au lieu de prendre une seule lettre comme variable, prendre un mot ? ex. Colonne1, Colonne2, etc ?

    je vais tester

    merci pour ton aide

  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,

    Utilises un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim T(1 To 3)
     
    T(1) = Application.Match("MS2", Plage, 0)
    T(2) = Application.Match("MH3", Plage, 0)
    T(3) = Application.Match("MS3", Plage, 0)
     
    Ligne = Me.Test.ListIndex + 7
     
    For I = 1 To 7
     
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, T(I)).Value
     
    Next I

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thomanneca Voir le message
    Utiliser des noms de variable qui ressemblent à une référence de cellule n'est pas une bonne idée, la preuve, cela m'a induit en erreur.
    Pourquoi ne pas donner un nom explicite à votre variable ? Exemple : ColonnePrenom, ColonneEnCours, etc... Le code n'en sera que plus lisible. Donc si ces variables sont de type Integer ou long, mon code est toujours valable.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/05/2014, 19h05
  2. [XL-2007] Rechercher une valeur sur base de deux critères
    Par HIGGUINS dans le forum Excel
    Réponses: 2
    Dernier message: 10/11/2010, 18h28
  3. Réponses: 2
    Dernier message: 14/06/2010, 02h39
  4. Réponses: 6
    Dernier message: 11/03/2009, 12h43
  5. Réponses: 15
    Dernier message: 19/08/2008, 12h55

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