Array Et Range

Bonjour à tous,

J'ai une petite question. J'ai un feuille qui liste une trentaine de mot (donc 30 cellules) en colonne A

Je souhaite créer un array() avec ces données et par la suite vérifier si ces mots existes dans le nom des feuilles de mon classeur.

Pour le moment j'ai ceci :

Sub arrayfilter()
Dim Tblo As Variant
Dim arr
Dim N
Recup_Pseudo = "Liste_Membre"

Tblo = Sheets(Recup_Pseudo).Range("A1:A20")
arr = Filter(Tblo, "Belgium", True, 1)
For N = LBound(arr) To UBound(arr): Debug.Print arr(N): Next N
End Sub

Mais ça me renvoie une erreur au niveau de la ligne

arr = Filter(Tblo, "Belgium", True, 1)

Comme quoi il y a une incompatibilité de type...

Une idée ?

Merci par avance pour votre aide

Cordialement,

Bonjour

joint un fichier Test

Merci

Fred

Bonjour

Bonjour fred2406

Extrait de l'aide sur Filter

Remarques

Si aucune correspondance pour l'argument match n'est trouvée dans l'argument sourcearray, la fonction Filter renvoie un tableau vide. Une erreur se produit si l'argument sourcearray est Null ou s'il ne s'agit pas d'un tableau à une dimension.

Le tableau renvoyé par la fonction Filter contient uniquement le nombre d'éléments suffisants pour contenir le nombre d'éléments correspondants.

Ton tableau Tblo a 2 dimensions

Essaye un truc comme ça

Sub arrayfilter()
Dim Tblo As Variant
Dim arr
Dim N
Dim J As Long

  Recup_Pseudo = "Liste_Membre"
  ReDim Tblo(1 To 20)
  For J = 1 To 20
    Tblo(J) = Sheets(Recup_Pseudo).Range("A" & J)
  Next J
  'Tblo = Sheets(Recup_Pseudo).Range("A1:A20")
  arr = Filter(Tblo, "Belgium", True, 1)
  For N = LBound(arr) To UBound(arr): Debug.Print arr(N): Next N
End Sub

Bonjour Banzai!!!!

cela faisait longtemps......

fred

Bonjour,

Merci pour vos réponses.

Du coup pour faire un Filter sur l'ensemble des onglets on fait comment ?

Sub arrayfilter()
    Dim Tblo As Variant
    Dim arr
    Dim N
    Dim J As Long
    Dim i As Long
    Dim W As Worksheet

    Recup_Pseudo = "Liste_Membre"
    ReDim Tblo(1 To 20)

    For J = 1 To 20

        Tblo(J) = Sheets(Recup_Pseudo).Range("A" & J)

        Next J

            arr = Filter(Tblo, "Belgium", True, 1)

    For N = LBound(arr) To UBound(arr):

        Debug.Print arr(N):

    Next N

End Sub

La ligne

arr = Filter(Tblo, "Belgium", True, 1)

Comment puis-je remplacer le texte "Belgium" par une variable récupérant le nom de tous les onglets de mon classeur ?

Je vous ai joint mon fichier, regardez le module 2 et la macro arrayfilter()

Merci pour votre aide

17importweb.xlsm (182.19 Ko)

Bonjour

Teste cette macro

Sub arrayfilter()
Dim Tblo As Variant, Arr
Dim J As Long
Dim Ws As Worksheet

  Recup_Pseudo = "Liste_Membre"
  ReDim Tblo(1 To 20)

  For J = 1 To 20
    Tblo(J) = Sheets(Recup_Pseudo).Range("A" & J)
  Next J

  For Each Ws In Sheets
    If Ws.Name <> Recup_Pseudo Then
      'Arr = Filter(Tblo, "Belgium", True, 1)
      Arr = Filter(Tblo, Ws.Name, True, 1)

      For J = LBound(Arr) To UBound(Arr):
        Debug.Print Arr(J)
      Next J
    End If
  Next Ws
End Sub

Re-bonjour,

C'est parfait merci beaucoup, j'en ai profité pour faire une condition et vérifier si le texte dans ma feuille est présente en tant qu'onglet

Bonne après-midi.

Cordialement,

Rechercher des sujets similaires à "array range"