Manipulation de tableaux

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • 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 !

Calvus

XLDnaute Barbatruc
Bonjour,

J'essaie de comprendre la manipulation de tableaux.

Pouvez vous m'expliquer ce qui ne va pas dans ce bout de code et qui génère une erreur d'exécution 9 L(indice n'appartient pas à la sélection ?
Code:
Dim T(), i As Integer
Dim tablo()
T = Range("C20").CurrentRegion
For i = 20 To 40
tablo(i, 1) = T(i, 1)

Merci
 
Re : Manipulation de tableaux

Bonjour,

Merci de vos réponses.

Dans la fenêtre exécution, tu peux vérifier les bornes de ton tableau T.

Que veux tu dire exactement ? Je ne vois pas comment faire.

@Tatiak : c'est mieux mais mon tableau reste vide. Et si je remplace T(i,1) par T(i,3) (ce que je pensais à priori être pour la colonne 3), j'ai à nouveau un problème.

Merci
 

Pièces jointes

Re : Manipulation de tableaux

Bonjour Tatiak.

Les bornes, correspondent aux limites, tu peux les trouver dans la fenêtre Variables Locales.
Sinon, par rapport à tes besoins tu peux faire ainsi :

Code:
Sub test()
Dim T(), tablo()
T = Range("C20").CurrentRegion
tablo = Application.Index(T, Evaluate("Row(20:30)"), 1)
Range("S10").Resize(UBound(tablo)) = tablo
End Sub

Solution trouvée sur le site de BoisGontier.
Tu peux déterminer les lignes par des variables également.
 
Re : Manipulation de tableaux

Re,

Je te remercie. Je viens de comprendre Evaluate en cherchant sur le net, que j'utilisais sans le savoir et sans en comprendre le sens exact. Je me trompais de dénomination finalement
A savoir, j'écris souvent [B1] par exemple.

Pour le reste, le résultat est erroné.

Tant pis. Je reviendrai peut être sur ce post plus tard.
Je vais ouvrir un autre fil pour mon besoin spécifique.

Bonne journée
 
Re : Manipulation de tableaux

salut

tu en baves avec toutes les sortes deTableaux hein 😉 !

Avec Range("C20").CurrentRegion , la colonne D étant vide tu as un tableau d'une seule dimension
dans ce cas tu passeras par
Code:
Sub test()
  Dim T(), i As Long, tablo()
  [S:T] = "" ‘pour voir
  T = Range("C20").CurrentRegion
  ReDim tablo(1 To UBound(T))
  For i = 1 To UBound(T) 
    tablo(i) = T(i, 1)
  Next
  Range("S10").Resize(UBound(tablo)) = Application.Transpose(tablo) 'pour 1 dimension
End Sub

Si tu veux plusieurs colonnes ce sera plutôt
Code:
Option Base 1 'à toi de voir pourquoi !
Sub testSi()
  Dim T(),L as long,  i As long, tablo()
  [S:T] = ""
  L = [C65000].End(xlUp).Row
  T = Range("C20:E" & l)
  ReDim tablo(1 To Ll, 1 To 2)
  For i = 1 To UBound(T)
    tablo(i, 1) = T(i, 1): tablo(i, 2) = T(i, 3) 'pour 2 colonnes
  Next
  Range("S10").Resize(UBound(tablo), 2) = tablo 'sans transposer !
End Sub
 

Pièces jointes

Re : Manipulation de tableaux

Hello mon cher Si !

Je dois dire que j'espérais bien ton intervention. 🙂

Je dois m'en aller maintenant. Je regarderai ce soir, et reviendrai avec mes questions, car cette fois, j'ai bien l'intention de comprendre une fois pour toutes cette foutue logique !!!

Je suis vraiment à la bourre, donc même pas le temps de lire le code maintenant, et encore moins d'ouvrir le fichier.

MerSSi 🙂
 
Re : Manipulation de tableaux

bonjour tous🙂🙂 Calvus🙂tatiak🙂Si🙂🙂

encore une facon d'ecrire.... sans REDIM

CALVUS 🙂 attention quand meme a la manipulation de CurrentRegion il faut bien comprendre comment cela marche
regarde aussi UsedRange

Code:
Sub es()
 Dim T()
 T = Range("C20").CurrentRegion
 
 'plusieurs colonnes si col D pas vide
 [s20].Resize(UBound(T, 1), UBound(T, 2)) = T
 
 'uniquement col C si col D pas vide
  '[s20].Resize(UBound(T)) = T
End Sub

ps oups🙁 j'ai oublie de dire bonjour a l'ami thebenoit 🙂🙂
 
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
3
Affichages
264
Retour