Erreur Action:=xlFilterCopy

Bonsoir,

j'utilise un code pour trier des valeurs et supprimer des doublons

dans une macro je l'utilise uen dizaine de fois, il marche pour certaines, mais blique pour d'autres au niveau "Range(r6..."

Tout me semble bon, je ne comprend pas!

'crer liste ST 2
Worksheets("BdD").Select
    Application.ScreenUpdating = False
    Range("r6:r" & [r65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("i1"), Unique:=True
    '--- tri ---
    Worksheets("Calcul_macro").Select
    Range("i2:i" & [i65000].End(xlUp).Row).Sort _
    Key1:=Range("i2"), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

vinny

Salut le forum

Sans fichier, je dirais que ton filtre ne contient que la ligne de titre sans aucune valeur en dessous,

ou que la colonne R n'existe pas sur la plage filtrée.

Mytå

Bonsoir à tous,

apparemment l'extraction se fait sur la feuille "Calcul_macro",

il faut le préciser dans le code.

vérifie que l'en-tête en "i1" est identique à r6

    Range("r6:r" & [r65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Sheets("Calcul_macro").Range("i1"), Unique:=True
    '--- tri ---

Amicalement

Claude

Merci claude, cela a fonctionner pour le code que j'avais mis.

Mais j'ai un problème avec le meme code que j'utilise autre-part. JE cherche depusi plsu d'une heur, toutes les combinaisons possible.

le problème est que lors de mon tri, il y a une case vide qui se met en g2 et seulement en dessous le tri... je voudrais que el tri se fasse a partir de g2

    '--- tri ---
    Sheets("Calcul_macro").Select
    Range("g2:g" & [g65000].End(xlUp).Row).Sort Key1:=Range("g2"), Order1:=xlAscending, _
    Header:=xlNo, OrderCustom:=1, MatchCase:=False

Bonsoir,

il y a une case vide qui se met en g2

vérifie que se soit bien une cellule vide, qu'il n'y est pas d'espace.

Claude

je vous met mon ficher alleger en pièce jointe, je ne pense pas avoir mis d'espace

vinny

23vincent-essai.xlsm (85.71 Ko)

re,

Tu as des apostrophes en fin de la colonne "AG",

ce n'est pas des cellules vides, donc prises en compte,

le tri classe l'apostrophe en 1er.

curieusement, chez moi et sur ton fichier, le code ne reconnait pas les crochets

Range("g2:g" & [g65000].End(xlUp).Row)

çà marche chez toi ?

j'ai ajouté un module avec ce code pour tester

Sub ListeSansDoublon()
Dim Lg As Long
    Sheets("Calcul_macro").Activate
    Lg = Range("ag" & Rows.Count).End(xlUp).Row

    Range("ag1:ag" & Lg).AdvancedFilter _
    Action:=xlFilterCopy, CopyToRange:=Range("g1"), Unique:=True
    '--- tri ---
    Range("g2:g" & Lg).Sort _
        Key1:=Range("g2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Claude

Chez moi les deux codes marchent, avec ou sans crochet.

Par contre je en voit pas cette apostrophe...j'ai donc selectionner la colonne et tout supprimer mais rien ne change!

C'est dans la colonne à filtrer (AG) qu'il faut supprimer les apostrophes,

pas la colonne à trier.

Claude

j'ai bien compris, je suis désolé, ej en vois pas d'apostrophes! c'est bien d'un signe " ' " dont vous parlez?

j'ai meme ajouter une ligne de code qui supprime l'ensemble de la colonne AG avant l'execution!

re,

J'ai l'impression qu'on ne parle pas du même fichier !

reposte-le

Sinon l'apostrophe n'est visible que dans la barre de formule

Claude

voici le fichier

10vincent-essai.xlsm (89.73 Ko)

Bonsoir,

Le problème vient du code de l'UserForm

hélas, je ne suis pas compétant là-dessus

en effet:

ces 3 lignes ci-dessous (31 à 33) sont vides en colonne "G"

'TextBox30 = Cells(31, "g")
'TextBox31 = Cells(32, "g")
'TextBox32 = Cells(33, "g")

1) ton code réécrit la même chose en colonne "AG", et génère une apostrophe sur ces 3 lignes

2) ensuite, tu filtre la colonne "AG" en "G" (tu récupère l'apostrophe)

3) ensuite, tu tri la colonne "G" et l'apostrophe se retrouve en tête

fais le test en remplissant G31 à G33 => plus de problème

En fait, je me demande à quoi sert cette macro et ce que tu souhaite faire avec l'UserForm,

Tu devrais ouvrir un poste pour initialiser l'UserForm dynamiquement.

Amicalement

Claude

Merci pour votre aide.

j'ai changer la partie du code qui copiais les valeurs du user form vers la feuille :

For xp = 1 To 32
    If Me.Controls("TextBox" & xp) <> "" Then
     Cells(1 + xp, "AG") = Me.Controls("TextBox" & xp)
     End If
Next xp

vinny

Rechercher des sujets similaires à "erreur action xlfiltercopy"