Déplacement d'un tableau sur une feuille

Bonsoir le forum,

J'ai un soucis avec ce tuto: http://www.apprentissage-virtuel.com/excel-vba/tableau-a-deux-dimensions

Dans mon module "mod_Tab2Dimensions", je n'arrive pas à déplacer le tableau dans la plage de cellule ("D17:M26")...

Je pensais m'en sortir en modifiant simplement les valeurs des boucles iLig et iCol, mais j'obtient une erreur 9: L'indice n'appartient pas à la sélection...

quelqu'un peut-il m'expliquer ce que je n'ai pas compris...?

Merci à tous pour votre aide...

Mon fichier joint :

Bonjour,

Voici :

Sub Test()

    Dim Tbl(1 To 10, 1 To 10) As Integer
    Dim I As Integer
    Dim J As Integer

    For I = 1 To 10: For J = 1 To 10

            Tbl(I, J) = Cells(I + 1, J + 1)

    Next J, I

    Range(Cells(17, 4), Cells(16 + UBound(Tbl, 1), 3 + UBound(Tbl, 2))) = Tbl

End Sub

Bonjour,

Bonjour Theze,

Pourquoi n'as tu pas proposé ?

Cells(17, 4).Resize(UBound(Tbl), UBound(Tbl, 2)).Value = Tbl

Cdlt.

Merci Theze et jean-eric,

Je vais garder vos deux proposition pour les étudier un peu plus...

On m'a proposé par ailleurs une correction de mon code d'origine que je met en dessous pour ceux qu ça intéresse.

Sub Tablo_Multiplication2()
Dim x, y, iCol, iLig As Integer
Dim Produit(10, 10) As Integer
'Sheets("Feuil1").Activate
' Ecrire le produit dans le tableau
For x = 1 To 10
   For y = 1 To 10
      Produit(x, y) = x * y
   Next y
Next x

' Puis écrire dans la feuille
[Surligner]For iLig = 17 To 26[/Surligner]
   [Surligner]For iCol = 4 To 13[/Surligner]
      Cells(iLig, iCol) = [Surligner]Produit(iLig - 16, iCol - 3)[/Surligner]
      ' Il faut ramener le curseur en début de ligne
      If iCol = 14 Then
         iCol = 4
      End If
   Next iCol
Next iLig
End Sub

Merci encore à vous deux pour votre aide...

Bonjour,

      ' Il faut ramener le curseur en début de ligne
      If iCol = 14 Then
         iCol = 4
      End If

Essaie quand de comprendre ce qu'on te propose pour progresser et éviter de rendre des âneries..

A quoi cela peut-il servir dans une boucle For iCol = 4 To 13 ?????

A rien...

eric

Bonjour,

Hello Jean-Eric, Eric

Jean-Eric, tu as raison mais les vieux réflexes et les habitudes ont la vie dure !!!

Bonsoir eriiic,

Merci pour ta remarque...

effectivement, après réflexion, si mon tableau s'arrête à la colonne 13, il n'ira jamais à la 14...

J'ai donc supprimé les lignes concernées et ça fonctionne très bien...

J'essaie d'adapter les propositions de Theze et Jean-eric...

Mais j'ai bien du mal à y intégrer la multiplication de x par y, un petit coup de main serait le bienvenu...

Et si j'ai déjà un peu progressé grâce à vous tous et je vous en remercie infiniment, mon niveau est encore loin de rivaliser avec le votre...

L'ânerie ne vient pas de moi, mais du tutoriel que je suivais...

Merci encore de partager votre savoir...

Pour être précis et que tu ne te fasses pas avoir plus tard, à la dernière boucle iCol=13 le Next s'exécutera et iCol prendra bien la valeur 14.

C'est surtout le For iCol = 4 to ... qui le ramène à 4.

Pour t'aider toi même et progresser, tu devrais prendre du temps pour voir les outils de débogage : pas à pas, mettre un break ou un point d'arrêt conditionnel, et savoir comment évaluer ou espionner une variable ou une expression.

Ca te permet de bien voir l'évolution en pas à pas et si les valeurs correspondent bien à ce que tu as prévu.

http://www.commentcamarche.net/contents/1381-debogage

eric

Bonjour,

Voici :

Sub Test()

    Dim Tbl(1 To 10, 1 To 10) As Integer
    Dim X As Integer
    Dim Y As Integer

    For X = 1 To 10: For Y = 1 To 10

            Tbl(X, Y) = X * Y

    Next Y, X

    Cells(17, 4).Resize(UBound(Tbl), UBound(Tbl, 2)).Value = Tbl

End Sub

Bonsoir eriiic et Theze,

Merci eriiic pour tes explications et ton lien fort intéressant, qui m'a permit de mieux comprendre le débogage....

Merci Theze pour ton code, mais peux-tu m'expliquer pourquoi tu déclare le tableau avec :

Dim Tbl(1 To 10, 1 To 10) As Integer

plutôt que

Option base 1

et la déclaration

Dim Tbl(10, 10) As Integer

Y-a-t'il un intérêt particulier l'un plus que l'autre qui m'échappe ?

Bonjour,

Par défaut, dans le VBE l'option base est zéro et donc, comme je n'utilise pour ainsi dire jamais "Option base 1", je défini obligatoirement les tailles de mes dimensions de mes tableaux avec 1 To x !

C'est juste une question d'habitude !

OK merci Thèse

Bonne journėe

Rechercher des sujets similaires à "deplacement tableau feuille"