XL 2016 Filtrer des tableaux en fonction de leur dimension

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

Spacepak

XLDnaute Junior
Bonjour,

J'aimerai créer une condition qui permet de filtrer une liste de tableaux d'entiers en fonction de leur dimensions.

Imaginons que je peux récupérer dans une variable soit un tableau de dimension 2 soit un tableau de dimension 1. J'aimerai alors afficher dans l'onglet 1 les tableaux de dim 1 et dans l'onglet 2 les tableaux de dim 2.

Du genre :

If IsNumeric(variable_tablo(1,1)) = true then 'ou un truc du genre
sheet1.range("A1") = variable_tablo...


Malheureusement Evidemment cela ne fonctionne pas. J'ai essayé de faire un On Error Goto mais j'ai tout de même une erreur du style 'Susbscript out of range'.

Pourriez-vous m'aider à trouver une combine svp?

Merci à vous
 
Bonjour
Commençons si tu le veux bien, par ceci :
Imaginons que je peux récupérer dans une variable soit un tableau de dimension 2 soit un tableau de dimension 1. J'aimerai alors afficher dans l'onglet 1 les tableaux de dim 1 et dans l'onglet 2 les tableaux de dim 2.
- dans quelles circonstances exactes as-tu ce besoin ?
- qu'appelles-tu exactement "tableau" (est-ce une plage, un tableau structuré, une matrice ?, etc ...) ?
- si matrice : si construite sur la base d'une plage, tu en connais le nombre de colonnes (plage.columns.count)
 
Bonjour

Oui désolé avec un exemple ce sera plus simple 🙂

Malheureusement je ne peux pas vous envoyer un fichier directement... (pas l'autorisation)

Voici alors une capture :

1586853662447.png




Et voici le code (juste crée pour un exemple)


Sub filtre_tablo()

Dim tablo1 As Variant
Dim tablo2 As Variant
Dim Tablo_Global As Variant

tablo1 = Range("B2").CurrentRegion
tablo2 = Range("H2").CurrentRegion


If tablo2(1, 2) <> "" Then
Range("H14").Resize(UBound(tablo2, 1), UBound(tablo2, 2)) = tablo2
Else
Range("A14").Resize(UBound(tablo2, 1)) = tablo2
End If



If tablo1(1, 2) <> "" Then
Range("H22").Resize(UBound(tablo2, 1), UBound(tablo2, 2)) = tablo2
Else
Range("A22").Resize(UBound(tablo2, 1)) = tablo2
End If

End Sub




Pour résumer : je récupère en fait les deux tableaux dans des variants.

Ensuite en fonction de leur dimension, soit je les affiche à gauche soit à droite.

Malheureusement cela va planter au niveau du tableau à 1 dim car j'essaye de faire une condition sur la 2eme dim qui n'existe pas.
 
Dernière édition:
Re
Ma manière de te répondre :
regarde ce que ferait ceci :
VB:
MsgBox Range("B2").CurrentRegion.Rows.Count & vbCrLf & Range("B2").CurrentRegion.Columns.Count
Ne serait-ce-pas les indications qui correspondent à ton tablo1 ? 🙂
Je te laisse faire, maintenant.
 
Re, Bonjour jmfmarques

Je suis pas sur d'avoir tout compris
(trop de confinement altère les synapses 😉)
VB:
Sub filtre_tablo()

Dim tablo1 As Variant
Dim tablo2 As Variant
Dim Tablo_Global As Variant

tablo1 = Range("B2").CurrentRegion
tablo2 = Range("H2").CurrentRegion

If UBound(tablo1, 2) > 1 Then
Range("A22").Resize(UBound(tablo1, 1), UBound(tablo1, 2)) = tablo2
Else
Range("A22").Resize(, UBound(tablo1, 1)) = Application.Transpose(tablo1)
End If
End Sub
 
- 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

Retour