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 une cellule dans une plage variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut Sélectionner une cellule dans une plage variable
    Bonjour ,
    j'aimerais connaitre le code qui me permettrait de sélectionner voir de connaitre la valeur d'une cellule dans une plage variables.


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Dim table As Range
    Dim table2 As Range
    Dim Ligne_table  As Byte
    Dim Cln_table  As Byte
     
    Dim hauteur_brut As Currency
    Dim Øext_brut As Integer
    Dim Øint_brut As Integer
     
    With Feuil5
    Øext_brut = .Range("W2").Value
    Øint_brut = .Range("X2").Value
    hauteur_brut = .Range("Y2").Value
     
    If hauteur_brut <= 50 Then
    Set table = .Range("A2:A19")
    ElseIf hauteur_brut > 50 And hauteur_brut <= 100 Then
    Set table = .Range("A2:A19")
    Set table2 = .Range("A20:A37")
    End If
     
    End With
     
    Ligne_table = 1
    Cln_table = 2
     
    For i = 300 To 2000 Step 100
    If Øext_brut > i And Øext_brut < i + 100 Then
    If Øext_brut - 50 < i Then
    Ligne_table = Ligne_table
    Exit For
    Else
    Ligne_table = Ligne_table + 1
    Exit For
    End If
    Else
    Ligne_table = Ligne_table + 1
    End If
    Next
     
    For i = 200 To 1800 Step 100
    If Øint_brut > i And Øint_brut < i + 100 Then
    Cln_table = Cln_table
    Exit For
    Else
    Cln_table = Cln_table + 1
    End If
    Next
    avec ce code j'obtient un numero ligne et un numéro de colonne.
    comment obtenir la valeur de ma cellule correspondante contenue ds ma plage "table" ?

    un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim x as currency 
     
    x = cells(table.rows(ligne_table) , table.columns(cln_table)).value
    mais ça ne fonctionne pas.

    Merci de votre aide

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Tout d'abord, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Feuil5
      '...
    End With
    m'étonne ! Ne serait-ce pas plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("Feuil5")
      '...
    End With
    ?

    avec ce code j'obtient un numero ligne et un numéro de colonne.
    comment obtenir la valeur de ma cellule correspondante contenue ds ma plage "table" ?
    Tout d'abord, ta table ne contient qu'une seule colonne (colonne A), cf. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set table = .Range("A2:A19")
    Dans ce cas, tu dois écrire x = Cells(ligne, 1).Value
    Maintenant, venons-en à la ligne. Je vais te répondre par une question : le numero de ligne que tu obtiens, c'est celui dans la feuille ou c'est la position relative de la cellule dans la table?
    Cas 1 : il n'y a rien de "spécial" à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Cells(ligne_table, 1).Value
    Mais à ce moment-là, je ne vois pas à quoi sert ta table?
    Cas 2 : 2 solutions :
    1. Si ta table est en 1D (une seule colonne), je pense que tu peux utiliser :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      x = table(ligne_table - 1)
      On fait - 1, car les listes sont en base 0 en VBA.
      Si tu t'es trompé avec la valeur de la table, et qu'elle est bien en 2D :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      x = table(ligne_table - 1, cln_table - 1)
    2. A priori, on peut faire ça sans la table, car la table semble toujours être "A2:A19". Donc elle commence à la ligne 2, le premier élément est donc en ligne 2, on en déduit les lignes des autres éléments, donc :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      x = Cells(ligne_table + 1, cln_table + 1).Value


    Cependant, j'ai une question : je ne comprends pas bien l'intérêt de la table. Pourquoi ne travailles-tu pas directement sur les Range, avec des numéros de lignes et de colonnes?
    Enfin, je pense que ce n'est pas une très bonne idée d'utiliser ce genre de signe : Ø dans ton code. En général, on évite les caractères spéciaux dans le code (même les é, è, à ...).

    J'espère que tu arriveras à avancer avec cela

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    Merci d'avoir corrigé mes erreurs

    et effectivement ma table ne sert à rien , j'ai juste besoin de connaitre la ligne où je dois démarrer !
    Encore merci !

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Citation Envoyé par riaolle Voir le message
    Tout d'abord, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Feuil5
      '...
    End With
    m'étonne !
    Pas du tout étonnant si c'est bien le CodeName de la feuille de calculs !

    ___________________________________________________________________________________________________________
    Je suis Paris, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Oh, ok, désolée, je ne savais pas. J'ai toujours utilisé sous la forme Sheets("maFeuil"). On apprend de nouvelles choses tous les jours

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Pour une feuille de calculs du classeur contenant le code mieux vaut utiliser son CodeName
    car si cette feuille est renommée par l'utilisateur son CodeName ne change pas …

    Content de t'avoir appris quelque chose, toi l'étudiante en sachant déjà pas mal !

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

Discussions similaires

  1. [XL-2007] Copie d'image dans une cellule vers une cellule d'une autre feuille
    Par natsamfa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2017, 21h27
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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