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 :

Utiliser la fonction Data sous vba Excel 2016


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Utiliser la fonction Data sous vba Excel 2016
    Bonjour à tous

    Je voudrais renseigner un tableau, mais avec des valeurs entrées en dur dans le code. Je me souviens qu'on pouvais le faire en Basic avec la fonction data, mais je ne sais pas le faire en VBA, et je n'ai pas trouvé d'exemple. Je ne peux pas le faire à partir de valeurs renseignées sur des cellules car le but est de pouvoir exporter la macro ensuite.

    Un petit exemple, je voudrais entrer ces 2 séries de valeurs dans un tableau :
    0 99,65
    0,01 99,5491
    0,02 99,4464
    0,03 99,3413
    0,04 99,2355
    0,05 99,128
    0,06 99,0189
    0,07 98,908
    0,08 98,7954
    0,09 98,681
    0,1 98,5648
    0,11 98,4467
    0,12 98,3268
    0,13 98,2049
    0,14 98,0812
    0,15 97,9538
    0,16 97,8254
    0,17 97,6947
    0,18 97,5617
    0,19 97,4265
    0,2 97,2888

    Est-ce que quelqu'un saurait comment faire ça ?
    En vous remerciant d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour,

    Pas certain de bien comprendre votre demande.
    Le code suivant y répond-il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Arr1 = Array(0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2)
    Arr2 = Array(99.65, 99.5491, 99.4464, 99.3413, 99.2355, 99.128, 99.0189, 98.908, 98.7954, 98.681, 98.5648, 98.4467, 98.3268, 98.2049, 98.0812, 97.9538, 97.8254, 97.6947, 97.5617, 97.4265, 97.2888)
    With Thisworkbook.Sheets("Feuil1")
        .Range("A2:A22").Value = Arr1
        .Range("B2:B22").Value = Arr2
    End With
    Cordialement

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Désolé, je m'exprime probablement mal

    Je voudrais simplement stocker la 1ere série de valeur dans la 1ere dimension d'une variable de type tableau, et la seconde série dans sa 2eme dimension.
    Par la suite je me servirai de cette variable tableau pour calculer une valeur de sortie (à partir d'une valeur d'entrée), plutôt que de passer par une formule de conversion.

  4. #4
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Dans ce cas, la formulation suivante suffira :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arr1 = [{0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2; 99.65, 99.5491, 99.4464, 99.3413, 99.2355, 99.128, 99.0189, 98.908, 98.7954, 98.681, 98.5648, 98.4467, 98.3268, 98.2049, 98.0812, 97.9538, 97.8254, 97.6947, 97.5617, 97.4265, 97.2888}]
    A vous d'adapter selon la façon dont vous souhaitez organiser vos lignes et vos colonnes.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    tu veux donc tout simplement créer et alimenter une matrice à deux dimensions
    Réponse dans ton aide interne VBA ) à la rubrique Dim, instruction, à lire, ainsi que celles résultant d'un clic sur son onglet "voir aussi".
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    En fait, j'avais testé la syntaxe que je propose ci-dessus pour un exemple bien plus simple.
    Dans votre cas, elle conduit à une ligne de plus de 255 caractères, ce qui produit une erreur.

    Plusieurs solutions de contournement sont envisageables. Je ne les traite pas toutes...
    1. Si la façon d'accéder aux données stockées vous est indifférente, vous pouvez écrire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Arr1 = Array(Array(0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2), _
              Array(99.65, 99.5491, 99.4464, 99.3413, 99.2355, 99.128, 99.0189, 98.908, 98.7954, 98.681, 98.5648, 98.4467, 98.3268, 98.2049, 98.0812, 97.9538, 97.8254, 97.6947, 97.5617, 97.4265, 97.2888))
      Dans ce cas, vous accéder aux différentes valeurs en utilisant : Arr1(nCol)(nLigne)
    2. Si vous préférez obtenir un unique tableau à 2 dimensions plutôt qu'un tableau de tableaux, il est possible d'écrire :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      Arr1 = Array(0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2)
      Arr2 = Array(99.65, 99.5491, 99.4464, 99.3413, 99.2355, 99.128, 99.0189, 98.908, 98.7954, 98.681, 98.5648, 98.4467, 98.3268, 98.2049, 98.0812, 97.9538, 97.8254, 97.6947, 97.5617, 97.4265, 97.2888)
      ReDim Arr3(1, 20)
      For i = 0 to 20
          Arr3(0, i) = Arr1(i)
          Arr3(1, i) = Arr2(i)
      Next i
      L'accès aux données est alors obtenu via : Arr3(nCol, nLigne)

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Cette explication est très claire, un grand merci à Ben_L

Discussions similaires

  1. Fonction "Find" sous VBA Excel
    Par havannah dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/07/2016, 17h48
  2. [XL-2007] Fonction Left sous VBa EXCEL
    Par FramanKalima dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 18/06/2015, 21h50
  3. Réponses: 1
    Dernier message: 26/08/2013, 23h29
  4. Formater le résultat d'une fonction perso sous VBA Excel
    Par miron_fds dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/06/2013, 15h07
  5. Utiliser AdvancedSearch sous VBA Excel pour lire les emails d'Outlook
    Par jean.cdc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2011, 15h29

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