Variable tableau et Array

  • Initiateur de la discussion Initiateur de la discussion Goufra
  • Date de début Date de début

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 !

Goufra

XLDnaute Occasionnel
Bonjour à vous,
je ne suis pas sûr d’avoir tout compris, j’essaie d’étudier les tutos de jb boisgontier

1/ Le tableau suivant : est-il bien un tableau à une dimension constitué de 13 éléments
a = Array(3, 4, 5, 6, 7, 8, 36, 10, 37, 38, 39, 14, 15)
je peux utiliser LBound et Ubound (est-ce une hérésie ?)
2/ a = vba.array(3,4,….) pour s’abstraire de l’option base 0, ne fonctionne pas


3/ Le tableau suivant est-il
un tableau à trois dimensions, chaque dimension étant constitué de 4 éléments.
Ou
Un tableau à une dimension constitué de 3 éléments eux-mêmes constitués de 4
Eléments.

tbl = Array( _
Array("ab", "bc", "cc", "de"), _
Array("ef", "fg", "gh", "hi"), _
Array(10, 20, 30, 40))

Je ne n’arrive pas à utiliser Lbound et Ubound cf « Sub ArrayEmboités2() ».

4/ Dans le tableau ci-dessus puis-je travailler avec des nombres d’éléments différents
tbl = Array( _
Array("ab", "bc", "cc", "de"), _
Array("ef", "fg", "gh", "hi"), _
Array(10, 20, 30, 40,50,60))

Je vous remercie par avance pour votre aide.
Cordialement
JC Goufra
 

Pièces jointes

Re : Variable tableau et Array

Bonjour,

Vos codes remaniés ci-dessous répondent-ils à vos interrogations ?

J'ai omis volontairement l'instruction Option Base 1

Code:
Option Explicit
'Option Base 1

Sub arraysimple_SansOptionBase1()
Dim a As Variant
Dim i As Integer
'--- Un tableau à une dimension et 13 éléments ---
a = Array(3, 4, 5, 6, 7, 8, 36, 10, 37, 38, 39, 14, 15)
MsgBox prompt:="Plus petit indice = " & LBound(a) & vbCrLf & "Plus grand indice = " & UBound(a), _
       Title:="Sans l'emploi de Option Base 1"
For i = LBound(a) To UBound(a)
  Cells(i + 1, 1) = a(i)  'pour la ligne réceptrice on ajoute 1 à i
Next i
End Sub

Sub arraysimple_SimuleOptionBase1()
Dim a As Variant
Dim i As Integer
'--- Un tableau à une dimension et 14 éléments dont le 1er est vide ---
a = Array(, 3, 4, 5, 6, 7, 8, 36, 10, 37, 38, 39, 14, 15)
MsgBox prompt:="Plus petit indice = " & LBound(a) & vbCrLf & "Plus grand indice = " & UBound(a) & vbCrLf & _
    "On omet le 1er élément (0)", Title:="Simulation de Option Base 1"
For i = 1 To UBound(a) 'en partant de 1 on omet l'élément vide
  Cells(i, 2) = a(i)  'la ligne réceptrice est égale à i
Next i
End Sub

Sub ArrayEmboités_SansOptionBase1()
Dim tbl As Variant
Dim lig%, col%
'--- Un tableau à une dimension constitué de 3 tableaux à une dimension
'--- eux-mêmes constitués de 4 éléments de même type ---
tbl = Array( _
  Array("ab", "bc", "cc", "de"), _
  Array("ef", "fg", "gh", "hi"), _
  Array(10, 20, 30, 40))
For lig = LBound(tbl) To UBound(tbl)
  For col = LBound(tbl(lig)) To UBound(tbl(lig))
    Cells(lig + 1, col + 1 + 4) = tbl(lig)(col) 'ligne réceptrice = lig+1 , colonne réceptrice = col+1 (+ l'écart offset de 4)
  Next col
Next lig
End Sub

Sub ArrayEmboités2_SansOptionBase1()
Dim tbl As Variant
Dim lig%, col%
'--- Un tableau à une dimension constitué de 3 tableaux à une dimension
'--- eux-mêmes constitués d'un nombre divers d'éléments de divers types ---
tbl = Array( _
  Array("a", "b", "c", "d"), _
  Array("e", "f", "g"), _
  Array(1, 2, 3, 25 / 2, "zaza", 3.14))  'notez l'expression mathématique 25/2 qui donnera 12.5
For lig = LBound(tbl) To UBound(tbl)
  For col = LBound(tbl(lig)) To UBound(tbl(lig))
    Cells(lig + 1, col + 1 + 12) = tbl(lig)(col) 'ligne réceptrice = lig+1 , colonne réceptrice = col+1 (+ l'écart offset de 12)
  Next col
Next lig
End Sub

Cordialement.

PMO
Patrick Morange
 
Re : Variable tableau et Array

Merci infiniment PM02 de m'avoir tout décortiqué.

Je suis désolé mais je n'arrive pas à comprendre le tout dernier exemple (le code fonctionne )


Ce que j'ai compris
For lig = LBound(tbl) To UBound(tbl) ===> 3 tableaux (équivalent à 3 éléments) ainsi to ubound(tbl) signifie to 2 et l'expression pourrait se lire for lig= 0 to 2

ce que je ne comprends pas :
1/ tbl(lig) dans : For col = LBound(tbl(lig)) To UBound(tbl(lig))
Je constate que tous les éléments sont considérés mais pourquoi je sèche.

2/ tbl(lig)(col) dans : Cells(lig + 1, col + 1) = tbl(lig)(col)
je ne comprends pas l'écriture .....sans rire j'ai essayé sans succès tbl(lig,col)


Je vous remercie pour votre compréhension à prendre en compte mon incompréhension. Bref de m'aider à progresser.

Si j'osais ... auriez vous un exemple simple d'utilisation de multi tableaux array.

Dans l'attente recevez toute ma gratitude.
JC Goufra
 
Re : Variable tableau et Array

Bonjour,

ce que je ne comprends pas :
1/ tbl(lig) dans : For col = LBound(tbl(lig)) To UBound(tbl(lig))
Je constate que tous les éléments sont considérés mais pourquoi je sèche.

2/ tbl(lig)(col) dans : Cells(lig + 1, col + 1) = tbl(lig)(col)
je ne comprends pas l'écriture .....sans rire j'ai essayé sans succès tbl(lig,col)

Voir le code suivant

Code:
Sub ArrayEmboités2_SansOptionBase1()
Dim tbl As Variant
Dim lig%, col%
'--- Un tableau à une dimension constitué de 3 tableaux à une dimension
'--- eux-mêmes constitués d'un nombre divers d'éléments de divers types ---
tbl = Array( _
  Array("a", "b", "c", "d"), _
  Array("e", "f", "g"), _
  Array(1, 2, 3, 25 / 2, "zaza", 3.14))  'notez l'expression mathématique 25/2 qui donnera 12.5
  
'--- énumère les 3 éléments de tbl qui sont des tableaux ---
For lig = LBound(tbl) To UBound(tbl)  'équivalent à 0 To 2
  '--- énumère les éléments des 3 éléments (tableaux) de tbl ---
  For col = LBound(tbl(lig)) To UBound(tbl(lig))  'se lit LBound(tbl(0)) To UBound(tbl(0)) quand lig=0
                                                  'se lit LBound(tbl(1)) To UBound(tbl(1)) quand lig=0
                                                  'se lit LBound(tbl(2)) To UBound(tbl(2)) quand lig=0
  
  '--- si lig=0 et col=0 alors on lit  Cells(0 + 1, 0 + 1 + 12) = tbl(0)(0)
  '--- si lig=0 et col=1 alors on lit  Cells(0 + 1, 1 + 1 + 12) = tbl(0)(1)
  '--- etc
  
  
  '--- tbl(0)(1) signifie 1er élément de tbl (donc le tableau Array("a", "b", "c", "d")) et le second élément de Array("a", "b", "c", "d") soit "b"
  '--- tbl(1)(0) signifie second élément de tbl (donc le tableau Array("e", "f", "g")) et le 1er élément de Array("e", "f", "g") soit "e"
  '--- etc
  
    Cells(lig + 1, col + 1 + 12) = tbl(lig)(col) 'ligne réceptrice = lig+1 , colonne réceptrice = col+1 (+ l'écart offset de 12)
  Next col
Next lig
End Sub

Si j'osais ... auriez vous un exemple simple d'utilisation de multi tableaux array

Voir l'exemple suivant

Code:
'###############
'On veut créer les titres d'un tableau Excel dans lequel on aurait les mois de l'année
'en colonnes de C à N, les régions en A, les commerciaux en B
Sub exempleUtilisation()
Dim S As Worksheet
Dim tbl As Variant
Dim lig&, col&
Set S = Sheets.Add
tbl = Array( _
  Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"), _
  Array("André", "Bernard", "Claude", "Daniel", "Etienne", "Fernand", "Gaston", "Hector", "Isidore", "Jacques"), _
  Array("Nord", , "Est", , , "Sud", , "Ouest", , "Centre"))
For col& = LBound(tbl(0)) To UBound(tbl(0)) 'les mois
  S.Cells(1, col& + 3) = tbl(0)(col&)
Next col&
For lig& = LBound(tbl(1)) To UBound(tbl(1))
  S.Cells(lig& + 2, 1) = tbl(2)(lig&)  'les régions
  S.Cells(lig& + 2, 2) = tbl(1)(lig&)  'les commerciaux
Next lig&
End Sub

Cordialement.

PMO
Patrick Morange
 
Re : Variable tableau et Array

Bonsoir PM02,

Merci infiniment.
Je remets à demain matin la compréhension de votre réponse. j'ai étudié et décortiqué tout l'après midi les pages de sylk ainsi que celles de boisgontier !

Je ne manquerai pas de vous informer de mes cogitations.
Quoiqu'il en soit je progresse
Très cordialement.
jc Gufra
 
Re : Variable tableau et Array

Bonsoir Patrick,

Bien, j'ai décortiqué les explications.

Obnubilé par la syntaxe = tabl(lig) (col)et bien qu'ayant compris le processus 1 ligne colone par colonne puis une 2ème ligne etc ... je n'avais pas percuté sur le bien fondé de for col = Lbound(tbl(lig)) to ....

J'ai enfin saisi la raison de = tab (col) (lig) Dur dur. C'est logique .....

No comment !

Merci :
1/ pour les explications détaillées qui m'ont ouvert les yeux;
2/ pour votre exemple que je peux maintenant exploité.

Une chose est certaine sans votre aide je serais resté coincé malgré mes bouquins et les sites que j'ai consultés.

Recevez mes chaleureux remerciements pour avoir pris le temps de m'aider.
Je vous offre ... virtuellement un café!
JC Goufra
 
- 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
2
Affichages
1 K
M
Réponses
0
Affichages
2 K
MARGAR
M
@
Réponses
4
Affichages
2 K
P
Retour