Extraire les valeurs d'un filtre dans un autre tableau

Non le problème ne vient pas de là, je suis passé sur excel 2016 qui est lui en francais.

Bonjour,

Place la macro ci-dessous dans un module Standard, puis tu la lances. Elle teste les 4 méthodes que je vois pour renvoyer l'objet

Les 2 premières, déjà vues, mais il est bon d'avoir confirmation. La 3e consistant à renvoyer l'objet à partir du nom dans le classeur échoue chez moi, la méthode exigeant une référence réelle à une plage et ne la reconnait pas sous forme de formule, elle devrait donc aussi échouer chez toi, mais sait-on jamais... Par contre la 4e, utilisant Evaluate, renvoie bien la plage à partir de la formule correspondant au nom. Si, comme j'ai cru le comprendre, MAC rechigne avec Evaluate, elle devrait donc aussi échouer chez toi, mais il faut le tester pour confirmer.

Si tu as 4 erreurs, je ne vois pas d'autre issue que d'abandonner la définition dynamique de plages au moyen de formules, dont on peut alors penser que MAC ne l'accepte pas... Cela ne simplifiera pas l'écriture mais pas de raison qu'on ne puisse y arriver...

Il y a peut-être une solution plus simple mais avec MAC je suis dans le brouillard...

Cordialement.

Sub Tests()
    On Error Resume Next
    MsgBox [BaseFilt].Address & vbLf & "Cliquez sur 'OK'..."
    If Err.Number <> 0 Then
        MsgBox "La notation '[Plage]' génère l'erreur " & Err.Number
        Err.Clear
    Else
        MsgBox "Pas d'erreur sur la notation '[Plage]'"
    End If
    MsgBox Range("BaseFilt").Address & vbLf & "Cliquez sur 'OK'..."
    If Err.Number <> 0 Then
        MsgBox "La notation 'Range(""Plage"")' génère l'erreur " & Err.Number
        Err.Clear
    Else
        MsgBox "Pas d'erreur sur la notation 'Range(""Plage"")'"
    End If
    MsgBox ThisWorkbook.Names("BaseFilt").RefersToRange.Address & vbLf & "Cliquez sur 'OK'..."
    If Err.Number <> 0 Then
        MsgBox "Le renvoi d'une plage par son nom dans le classeur génère l'erreur " & Err.Number
        Err.Clear
    Else
        MsgBox "Pas d'erreur en renvoyant une plage par son nom dans le classeur"
    End If
    MsgBox Evaluate(ThisWorkbook.Names("BaseFilt").RefersTo).Address & vbLf & "Cliquez sur 'OK'..."
    If Err.Number <> 0 Then
        MsgBox "L'utilisation de la méthode 'Evaluate' pour renvoyer la plage génère l'erreur " & Err.Number
        Err.Clear
    Else
        MsgBox "Pas d'erreur en utilisant 'Evaluate' pour renvoyer la plage"
    End If
End Sub

Merci !

Voici toutes les étapes en capture d'écran avec le code utilisé j'ai juste remplacé le premier BasFilt entre crochet par Range("BaseFilt"). 8)

capture d e cran 2016 12 23 a 11 57 43 capture d e cran 2016 12 23 a 11 57 54 capture d e cran 2016 12 23 a 11 58 04 capture d e cran 2016 12 23 a 11 58 11 capture d e cran 2016 12 23 a 11 58 19 capture d e cran 2016 12 23 a 11 58 25 capture d e cran 2016 12 23 a 11 58 31

Ah ! Ça change tout ! 2 méthodes qui passent !

Cela voudrait dire qu'en modifiant les notations en : Range("BaseFilt"), Range("BaseCode"), etc. cela devrait fonctionner !

Or, tu avais signalé une erreur avec cette notation...

L'erreur vient alors d'un autre élément qu'il va falloir cerner !

Rechercher des sujets similaires à "extraire valeurs filtre tableau"