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 :

Récupération donnée dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Récupération donnée dans une cellule
    Bonjour,

    J'ai un probleme avec ma programmation dans VBA
    j'ai besoin de récupéré des données des cellules d'excel et de m'en servir pour pouvoir faire ma boucle.


    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
    Sub Acier()
     
    ' Donnée à récupérée dans excel
        P1.Value = Range("Données!I10") 
        P5.Value = Range("Données!I11")
     
        acier = P1
     
    'Donnée à récupéré dans excel    
       N_int.Value = Range("Module4!E8")
       N_ext.Value = Range("Module4!E9")
       E_int.Value = Range("Module4!E10")
       E_ext.Value = Range("Module4!E11")
     
     
      Do While (N_int < N_ext And E_int < E_ext Or P1 = P5)
           acier = acier + 0.0005
           Range("Données!I5").Value = acier
    ' On range la valeur de la cellule nommé acier dans la case correspondante et on fait une boucle par rapport à celle ci.
      Loop
     
    End Sub
    Merci par avance et j'espere que c'est compréhensible.

    Macarons

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut...

    Et le problème est?

    Je pose la question parce Madame Irma vient de quitter le bureau...

    Plus sérieusement:
    Sub Acier suivi de acier=... pose forcément un problème à l'exécution, car tu ne peux pas avoir une procédure qui porte le même nom qu'une variable.

    Comme l'un porte une majuscule et l'autre pas, cela signifie que tu n'as probablement pas réalisé un copier/coller de ton code => comment être certain que c'est ce code qui pose problème?

    De plus, je ne vois pas de déclaration de variables. P-1, P_1, N_Int ... semblent être des objets de type Range, mais en l'absence de déclaration, c'est sans certitude...


    Peux-tu donner le vrai code utilisé et dire en quoi il ne fonctionne pas?

    Aide-toi et le DVP t'aidera.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    P1, P5, N_int... sont elles des variables ou autres (textes box par exemple)?
    Dans ta boucle, tu quand tu changes la variable acier dans I5, tes autres variables sont figées. direct vers une boucle infinie ou sans boucle.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Citation Envoyé par mercatog Voir le message
    ...
    Dans ta boucle, tu quand tu changes la variable acier dans I5, tes autres variables sont figées. direct vers une boucle infinie ou sans boucle.
    Si une de ces variables est un objet Range pointant vers I5 ou une cellule dépendante de I5, les valeurs changent à chaque boucle...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 207
    Points : 251
    Points
    251
    Par défaut
    Bonjour, pour initialiser les variables au début de ton code, il vaut mieux faire comme cela je pense (en supposant que c'est bien la valeur de la cellule que tu veux récupérer).



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Acier()
     
    ' Donnée à récupérée dans excel
        P1 = Range("Données!I10") .Value
        P5 = Range("Données!I11").Value
     
        acier = P1
     
    'Donnée à récupéré dans excel    
       N_int.= Range("Module4!E8").Value
       N_ext = Range("Module4!E9").Value
       E_int = Range("Module4!E10").Value
       E_ext = Range("Module4!E11").Value
    D'ailleurs il est toujours préférable de déclarer explicitement ses variables et leur type, plutôt que de laisser VB se débrouiller avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Option Explicit
     
    Sub machin()
     
    Dim maVariable As Long 'si c'est un entier
    Dim maVariable As Double 'si c'est un flottant (nombre à virgule)
     
    '...
    Et sinon ta boucle va tourner soit jamais soit indéfiniment vu que tu ne modifie pas les conditions de test au sein de ta boucle.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.


    Si une de ces variables est un objet Range pointant vers I5 ou une cellule dépendante de I5, les valeurs changent à chaque boucle...

    Salut

    Je ne vois pas quelque part une initialisation de P1 par exemple comme étant un range avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set P1 = Worksheets(YYY).Range(YYY)
    Pour moi P1 dans son code ne peut pas être un Range sans initialisation initiale de la variable P1 avec cette écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P1.Value = Range("Données!I10")
    .
    Mais avec des Si, tu connais la suite.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Salut

    Je ne vois pas quelque part une initialisation de P1 par exemple comme étant un range avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set P1 = Worksheets(YYY).Range(YYY)
    Pour moi P1 dans son code ne peut pas être un Range sans initialisation initiale de la variable P1 avec cette écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P1.Value = Range("Données!I10")
    .
    Mais avec des Si, tu connais la suite.
    Ce peut être une variable globale déclarée ailleurs. Rien ne laisse croire non plus que c'est un textbox et que le code est placé dans le module d'un userform, par exemple (puisque P1 non préfixé)... Donc, tu as raison: Supposer que c'est une cellule est aussi vain que supposer que c'est un textbox.

    C'est pourquoi j'ai proposé à Macarons de compléter l'info.

    Ma remarque sur la boucle infinie veut juste souligner qu'il ne faut pas se fier au code en dehors du contexte. C'est tout ce qu'il faut en retenir.

    Et de toute façon, le problème initial vient de l'ambiguïté de acier qui empêche le code de fonctionner dès le lancement de la macro, à la compilation. Résoudre ce problème (en renommant la variable) permettra à Macarons de pouvoir avancer dans son code, de voir s'il pose toujours problème ou pas, et si oui, où et pourquoi.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2003] Récupération de certaines données dans une cellule
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/05/2010, 15h59
  2. Réponses: 2
    Dernier message: 22/04/2010, 11h13
  3. Récuperer une donnée dans une cellule excel
    Par zorobab dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 06/01/2010, 16h13
  4. Recuperer une donnée dans une cellule Excel pour l'exploiter
    Par Tinien dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2008, 22h29
  5. Lecture de donnée dans une cellule d'un datagridview
    Par thierry007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/03/2008, 21h48

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