Tableau VB

Bonjour à tous

Je doit réaliser un programme qui effectue la permutation circulaire à gauche (ou

respectivement à droite) des éléments d’un tableau : chaque élément doit

prendre la valeur de l’élément suivant (ou respectivement précédent), et

le dernier élément (respectivement le premier élément) doit prendre la

valeur du premier élément (respectivement du dernier élément).

Par exemple : 1 - 2 - 3 - 4 - 5 doit devenir : 5 - 1 - 2 - 3 - 4

Mais je bloque complet avec ces histoires de ta bleau. Voici mon programme qui est faux ^^ :

Sub Exo6()

Dim T() As Integer

Dim i As Integer

Dim A As Integer

Dim N As Integer

Dim R As Integer

ReDim T(N)

A = 0

N = InputBox("saisir nombre de numéros")

For i = N To 1 Step -1

T(N) = InputBox("saisir un numéro")

T(N) = T(N - 1)

A = A & T(N) & ";"

Next i

MsgBox ("le tableau contient les valeurs" & A)

End Sub

Sauf que ça ne fonctionne pas et je bloque totalement.

Un petit peu d'aide serait vraiment génial, merci !

Mets d'abord le ReDim T(N) après avoir introduit la valeur de N !

Oui je m'en suis aperçu entre temps

Sauf que maintenant c'est la partie A = A & T(N) & ";" qui est souligné en jaune : "erreur 13 : incompatibilité de type ..."

Merci

A ne peut pas être INTEGER mais STRING car tu le construis par concaténation de valeurs


Tu définis une boucle avec i mais que tu n'utilises pas !! tu es sûr que ce n'est pas T(i) au lieu de T(N) ?


Commence avec A = "" et non A = 0

Ah oui merci, j'oublie souvent pour les chaines de caractères.

Néanmoins j'ai un soucis c'est que mon

T(N) = T(N-1) sachant que T(N-1) n'est pas affecté au début de la boucle je me retrouve avec que des 0 dans mon tableau car la valeur précédente est toujours 0.

Bref, ceci fonctionne et est plus logique, mais je ne sais pas si cela correspond à ton objectif !

Sub Exo6()
Dim T() As Integer
Dim i As Integer
Dim A As String
Dim N As Integer
Dim R As Integer

A = ""
N = InputBox("saisir nombre de numéros")
ReDim T(N)

For i = N To 1 Step -1
T(N) = InputBox("saisir un numéro")
T(i) = T(N)
A = A & T(N) & ";"
Next i

MsgBox ("le tableau contient les valeurs " & A)

End Sub

Oui ça fonctionne, mais malheureusement il faut que mes chiffres soient inversés, si par exemple je saisi 1 - 2 - 3 il faut que le MsgBox affiche 3 - 1 - 2

Bonjour.

Sub Demo()
                                                   TB = [{6,7,8,9}]
                                                   V1 = TB(UBound(TB))
For P% = UBound(TB) To LBound(TB) + 1 Step -1:  TB(P) = TB(P - 1):  Next
                                       TB(LBound(TB)) = V1
MsgBox Join(TB)
End Sub

Avec ce tableau, UBound(TB) peut directement être remplacé par 4 comme LBound(TB) par 1

Capss07 a écrit :

Oui ça fonctionne, mais malheureusement il faut que mes chiffres soient inversés, si par exemple je saisi 1 - 2 - 3 il faut que le MsgBox affiche 3 - 1 - 2

un peu de réflexion ...

A = T(N) & A & ";"

Ah oui effectivement permuter suffit !

Merci beaucoup.

Marc L votre tableau fonctionne mais je n'ai jamais utilisé UBound LBound, je vais privilégié ce que je connais !

Merci

C'est la méthode universelle … Et pourtant j'ai indiqué comment les remplacer par des valeurs !


La meilleure façon de ne pas avancer est de suivre une idée fixe. (Jacques Prévert)

Merci, je prendrais dorénavant UBound() To LBound()

Oui dans le cas d'une boucle dans l'ordre inverse pour un tableau à la dimension variable.

Sinon dans ma démonstration : For P% = 4 To 2 Step -1


We are all very ignorant, what happens is that not all ignore the same things … (Albert Einstein)

Rechercher des sujets similaires à "tableau"