Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme dimension d'un tableau

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 !

awa123

XLDnaute Occasionnel
Bonjour

l'idée des boucles que j’essaie de faire est très simple : j'explore mon tableau nommé "tableau_machine" (voir l'image jointe) et a chaque fois qu'il rencontre des 1 , il va chercher dans le tableau de données nommé "tableauinit" les valeurs qui se cache derrière les 1


j'aimerai donc qu'il m'affiche les valeurs qui se cachent uniquement derrière les 1 du tableau "tableau_machine" à partir du tableau "tableauinit" en cherchant bien sur la correspondance de l'opération (ce que j'appelle opération est les noms sur la première colonne de chaque tableau O11 O21....)

j'ai donc tenté la boucle suivante :

Code:
    For i = 1 To UBound(tableau_machine, 1)
        For k = 1 To UBound(tableau_machine, 2) '& UBound(tableauinit, 2)
             
                If tableau_machine(i, k) = 1 Then
                    For e = 1 To UBound(tableauinit, 1)
                       
                        If tableau_machine(e, 0) = tableau_machine(i, 0) Then
                            MsgBox tableauinit(e, k)
                        End If
                       
                   Next e
                End If
        Next k
    Next i

le constat de cette boucle est qu'il ne m'affiche pas seulement les valeurs qui se cachent derrière les 1, mais il m'affiche des 0 (d'où je ne sait où il va les chercher)

je pense que le problème vient d'abord de la déclaration de la dimension de mon tableau "tableauinit" car je dis au code qu'il va l'explorer uniquement sur sa première dimension (For e = 1 To UBound(tableauinit, 1) puis ensuite je lui demande de m'afficher
la valeur qui correspond à tableauinit(e, k) et c'est ici que ça doit bugger car je ne sait pas comment introduire sa déclaration de sa deuxième dimension.

j’espère que je me suis fait comprendre sinon dite moi la partie obscure

merci

ps: je vous joins quand même mon fichier excel pour constater lors de l'execution les valeurs qui sortent
 

Pièces jointes

  • tableau_machine.jpg
    7.4 KB · Affichages: 58
  • tableauinit.jpg
    34.4 KB · Affichages: 63
  • fjsp f1.zip
    fjsp f1.zip
    30.2 KB · Affichages: 31
  • fjsp f1.zip
    fjsp f1.zip
    30.2 KB · Affichages: 25
  • fjsp f1.zip
    fjsp f1.zip
    30.2 KB · Affichages: 31
Re : probleme dimension d'un tableau

bonjour,

je reformule le soucis pour voir si j'ai bien compris:

-on a un premier tableau "tableau_machine" renseigné de 0 et de 1
-on a un deuxième tableau ("tableauinit") de même structure que le premier, renseigné de valeurs quelconques
- on veut, pour chaque "1" du premier tableau , récupérer la valeur de la "case" de même coordonnées du deuxième tableau

Si c'est bien ça, que faire de cette valeur ? la copier quelque part , mais où ?

.

A+
 
Re : probleme dimension d'un tableau

bonjour Paf,

oui c'est exactement cela ,

et je voudrais juste afficher la valeur numérique (du tableau "tableauinit" ) qui correspond au 1 du tableau "tableau_machine" de même coordonné (c'est a dire il faut d'abord rechercher la ligne qui correspond à l'opération en question ,O11 O21.... dans le tableau "tableauinit".

je viens de trouver le code qui réalise cela :

Code:
For i = 1 To UBound(tableau_machine, 1)
    For k = 1 To UBound(tableau_machine, 2) '& UBound(tableauinit, 2)
            If tableau_machine(i, k) = 1 Then
                For e = 1 To UBound(tableauinit, 1)
                     If tableau_machine(i, 0) = tableauinit(e, 0) Then
                      MsgBox tableauinit(e, k)
                     '   MsgBox tableauinit(e, k)
                    End If
                Next e
            End If
    Next k
Next i

mais il y a quelque chose qui me dérange , c'est au niveau du "tableauinit", je le déclare en disant que je vais explorer uniquement sa premiere colonne ( For e = 1 To UBound(tableauinit, 1)) puis après je lui demande de m'afficher tableauinit(e, k) et donc là je touche à sa deuxième dimension sans avoir déclarer UBound(tableauinit, 2) . Heureusement il le fait sans problème mais je trouve cela bizarre car je pense qu'il faut tout de même lui dire au préalable qu'on va le faire jouer sur sa deuxieme dimension , non?

merci
 
Re : probleme dimension d'un tableau

Re bonjour,

Si ça marche, tant mieux !

je le déclare en disant que je vais explorer uniquement sa premiere colonne ( For e = 1 To UBound(tableauinit, 1))

Il ne s'agit pas de déclaration , les déclaration des tableaux on été faites en début de sub de module ...

En fait, on fixe tout simplement les limites de la variable e qui prendra les valeurs 1 à l'indice le plus élevé du tableau dans sa "colonne" 1.
Après on peut faire afficher ce que l'on veut :

par exemple
Code:
For e = 1 To UBound(tableauinit, 1)
   Msgbox tableauinit(e,1) & "  "  tableauinit(e,2) & tableauinit(e,3)
next
ou
Code:
For e = 1 To 10
   Msgbox tableauinit(e,1) & "  "  tableauinit(e,2) & tableauinit(e,3)
next

Attention le plus petit indice d'un tableau est 0, sauf si on spécifie Option Base 1 dans les déclarations générales

Bonne suite
 
Re : probleme dimension d'un tableau

Bonsoir à tous.


Un essai, juste pour savoir si j'ai bien compris.​


Bonne nuit.


ℝOGER2327
#7061


Mardi 17 Sable 141 (Saint Moyen, français - fête Suprême Quarte)
27 Frimaire An CCXXII, 9,3553h - liége
2013-W51-2T22:27:10Z
 

Pièces jointes

- 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
15
Affichages
788
Réponses
4
Affichages
735
Réponses
6
Affichages
199
Réponses
5
Affichages
914
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…