XL 2016 fonction array

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jimmy76002

XLDnaute Nouveau
Bonjour à tous, je redige une macro qui doit me servir a calculer une temperature par la suite.

Pour calculer cette temperature, l'utilisation de facteurs est necessaire. Ces facteurs ont été listés dans le fichier excel ci-joint.

Ces facteurs, (appelés a0, a1, a2...) sont des facteurs qui changent en fonction du capteur qui est choisi( j'ai pour cela utilisé un case qui fonctionne bien)

Prenons l'exemple du cas1

J'utilise une boucle for next qui fonctionne bien aussi , ou je parcours les lignes qui m'interesse pour recuperer la valeur de ce facteur à chaque boucle. (à la premiere boucle je recupere la valeur de a0, à la deuxieme celle de a1 ...)

Je souhaite les ranger dans un tableau à une dimension, et c'est là qu'un probleme se pose, la syntaxe est la suivante :
a(i) = Range("C" + Trim(Str(i) + Ligne_Depart))
La partie de droite est a chaque fois le facteur qui est bien pris dans la cellule, cependant, à gauche, j'ai toujours a(i) alors que je voudrais au premier tour par exemple : a0 = =-1,7600413686*10
et au deuxieme a1 = =3,8921204975*10 ect

Cela me pose probleme car je dois ensuite faire un calcul avec ces facteurs, que je ne "memorise" cependant pas, et l'utilisation de la fonction array m'est imposée.

Je ne sais pas si c'est un probleme de declaration de variable, de syntaxe...
Auriez vous une idée pour celà svp?

Restant à votre disposition

Cordialement
 

Pièces jointes

Solution
Dans ce cas, le plus simple est peut être :
VB:
Public a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
Sub macro_essay()
capteur = "K"
Select Case capteur
        Case "K": Lire 6
        Case "T": Lire 29
End Select
End Sub
Sub Lire(Ldep) ' Affecte les valeurs aux variables a0 a10
    a0 = Cells(Ldep + 0, "C")
    a1 = Cells(Ldep + 1, "C")
    a2 = Cells(Ldep + 2, "C")
    a3 = Cells(Ldep + 3, "C")
    a4 = Cells(Ldep + 4, "C")
    a5 = Cells(Ldep + 5, "C")
    a6 = Cells(Ldep + 6, "C")
    a7 = Cells(Ldep + 7, "C")
    a8 = Cells(Ldep + 8, "C")
    a9 = Cells(Ldep + 9, "C")
    a10 = Cells(Ldep + 10, "C")
End Sub
Vous pouvez ensuite utiliser les variables a0 a10 dans la suite des macros.
NB: Il existe peut être mieux comme système.
Bonsoir,

Pourquoi déclarer 10 variables alors qu'avec un tableau de variable, c'est bien plus simple et clair.
Et si on avait 100 variables, on devrait déclarer a0 à a99 😱 !

Essayer :
VB:
Option Explicit

Sub macro_essay()
Dim capteur As String, t, i As Long, msg As String
   capteur = UCase(InputBox("De quel capteur souhaitez vous connaître une température? :"))
   Select Case capteur     'transfert des facteurs de la feuille dans un  tableau t
      Case "K"
         t = Range("c6:c15").Value     ' t est un tableau à 2 dimensions de base 1
      Case "T"
         t = Range("c30:c39").Value    ' t est un tableau à 2 dimensions de base 1
      Case Else
         MsgBox capteur & " : capteur incorrect => FIN de l'exécution!", vbCritical: Exit Sub
   End Select
   ' à ce stade les coefficients sont dans le tableau : t(1,1), t(1,2), t(1,3) jusqu'à t(1,10)
   ' ON DEVRAIT S'ARRÊTER et utiliser par la suite le tableau t des coeff.
   ' juste pour vérif du tableau t
   msg = "Pour le type " & capteur
   For i = 1 To UBound(t): msg = msg & vbLf & "t(" & i & ",1) = " & t(i, 1): Next i
   MsgBox msg, vbInformation
  
   ' si maintenant (mais c'est inutile) vous voulez les mêmes coeef.
   ' dans un tableau à une seule dimension de base 0 alors :
   ReDim a(0 To UBound(t) - 1)      ' déclaration de a (une seule dimension de base 0)
   For i = 1 To UBound(t): a(i - 1) = t(i, 1): Next   ' remplissage de a
   ' juste pour vérif du tableau a
   msg = "Pour le type " & capteur
   For i = 0 To UBound(a): msg = msg & vbLf & "a(" & i & ") = " & a(i): Next i
   MsgBox msg, vbInformation
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
508
Réponses
19
Affichages
1 K
Réponses
4
Affichages
574
Retour