Accéder au contenu d'une cellule pour faire un filtre

MonsieurBoeuf

XLDnaute Nouveau
Bonjour à tous,

Ma Feuil1 se compose de deux colonnes: la colonne A est composée de cellules qui sont des imports de champs de liste déroulante depuis word et la colonne B est composée de cellules qui sont des imports de champ de zone de texte depuis word

Voilà mon problème:
Je cherche à réaliser un filtre sur la colonne A selon un critère ou deux critères et pour cela j'ai fait une copie d'une des cellules de ma colonne A en feuil1 sur la cellule B2 de ma feuil2 qui devient mon CriteriaRange et j'utilise alors le code:

Code:
Sub Filtre()
Sheets("Feuil1").Range("A2:A100").AdvancedFilter Action:= _
xlFilterCopy, CriteriaRange:=Sheets("Feuil2").Range("B2"), _
CopyToRange:=Sheets("Feuil3").Range("A2:A100"), Unique:=False
Columns("A:A").EntireColumn.AutoFit
End Sub

Malgré cela, cette macro me copie colle l'intégralité de ma colonne A de ma Feuil1 dans la colonne A de ma Feuil3...

D'où ma question, comment faire en sorte qu'Excel lise bien le contenu de mes cellules ( à l'aide d'un ".Value" ?) car j'ai l'impression qu'il ne le fait pas avec mon code actuel...

Pour rappel, (c'est là tout le problème) mes cellules sont des copies de champs word importés via une macro sur ma feuille

Si qqn peut m'aider... d'avance merci beaucoup!
 
G

Guest

Guest
Re : Accéder au contenu d'une cellule pour faire un filtre

Bonjour,

Avec un fichier exemple <50ko se serait plus facile de voir d'où vient le problème.
Si tes colonnes sources ont des titres, mettre le Titre de la colonne dans Feuil2!B1 et la valeur filtre en Feuil2!B2 et
Code:
....
CriteriaRange:=Feuil2.range("B1:B2")

Quant au paramètre destination, il ne doit comporter qu'une ligne:
Code:
CopyToRange:=Sheets("Feuil3").Range("A2")
Et si A1 est occupé, A1 doit correspondre au titre de la colonne à retourner.

A+
 

MonsieurBoeuf

XLDnaute Nouveau
Re : Accéder au contenu d'une cellule pour faire un filtre

Merci pour ta réponse.

A priori pas de soucis pour le paramètre de destination mais je note.

Je te joins un extrait de mon classeur, par soucis de confidentialité, j'ai remplacé les textes de la colonne B par "blablabla".

Merci de te pencher sur mon problème
 

Pièces jointes

  • Extrait.xls
    27 KB · Affichages: 51
  • Extrait.xls
    27 KB · Affichages: 50
  • Extrait.xls
    27 KB · Affichages: 53
G

Guest

Guest
Re : Accéder au contenu d'une cellule pour faire un filtre

Re,

Après multiples tests, je ne parviens pas à extraire tes données! Peut-être à causes des mutliple saut de ligne.
Code:
Sub Filtre()
Dim c As Range, cDest As Range
For Each c In Sheets("Feuil1").Range("A2:A100")
    If c = Sheets("Feuil2").Range("B2") Then
        With Sheets("Feuil3")
            Set cDest = .Range("B" & .Rows.Count).End(xlUp)
            If cDest.Row < 2 Then Set cDest = .Range("B2") Else Set cDest = cDest(2)
            c.Copy cDest
        End With
    End If
Next c
End Sub
A+
 
Dernière modification par un modérateur:

MonsieurBoeuf

XLDnaute Nouveau
Re : Accéder au contenu d'une cellule pour faire un filtre

Déjà merci pour ta réponse.

Mon test consisterait à faire la chose suivante:

En Feuil2 cellule B2, je place par exemple une copie d'une cellule de la Feuil1 qui serait Point Fort R1

Je teste toutes les cellules de la Feuil1 Colonne A qui réponde à ce critère et ensuite, ces cellules répérées, je sélectionne tous les textes qui leur correspondent en colonne B et je les colle en colonne A de la Feuil3.

Mais déjà ne serait-ce que, copier-coller les cellules de la Feuil1 Colonne A qui répondent au critère vers la la Feuil3 Colonne A serait un grand pas.

A terme, si cela marche, j'aimerai créer un USF avec un bouton pour chacune des combinaisons possibles (Point fort, Point Fort et R1, ...) . Mais bon...

J'espère que ce n'est pas trop nébuleux ce que je raconte :confused:
 

MonsieurBoeuf

XLDnaute Nouveau
Re : Accéder au contenu d'une cellule pour faire un filtre

Franchement merci beaucoup, ça marche parfaitement.

Du coup, je vais poursuivre de mon côté en essayant d'associer la cellule texte "d'à côté" (Feuil1 ColonneB) et ce sera niquel...

Et après je ferai mon USF.

Encore et encore merci, si jamais je coince (pas pour l'USF mais pour ce qu'il y a au dessus), je reviendrai peut-être te demander des conseils sans vouloir abuser de ta générosité.

Encore merci, vraiment!
 
G

Guest

Guest
Re : Accéder au contenu d'une cellule pour faire un filtre

Re,

Il me semble que les problèmes d'extraction pourraient venir du nombre de sauts de lignes dans les données. Excel doit avoir du mal à les interpréter?

A+
 

MonsieurBoeuf

XLDnaute Nouveau
Re : Accéder au contenu d'une cellule pour faire un filtre

Oui sans doute, mais je n'ai pas réussi à faire autrement qu'avoir tous ces sauts quand j'extraie mes données depuis mes documents Word, ça a été un sacrée galère au passage...

Bon j'ai juste rajouté une ligne à ton code et ça marche niquel:
J'ai la cellule-critère et le texte correspondant à côté...

Code:

Sub Filtre()
Dim c As Range, cDest As Range
For Each c In Sheets("Feuil1").Range("A2:A300")
If c = Sheets("Feuil2").Range("B2") Then
With Sheets("Feuil3")
Set cDest = .Range("B" & .Rows.Count).End(xlUp)
If cDest.Row < 2 Then Set cDest = .Range("B2") Else Set cDest = cDest(2)
c.Copy cDest
c.Offset(0, 1).Copy cDest.Offset(0, 1)
End With
End If
Next c
End Sub


Je vais reproduire ceci pour chaque combinaison, faire un USF avec des boutons et j'aurai ce que je voulais


Encore merci de m'avoir dépanné!
 
G

Guest

Guest
Re : Accéder au contenu d'une cellule pour faire un filtre

Bonjour,

Pour nettoyer tes données
Code:
Sub Epurer()
'Remplacer les sauts de lignes par des espaces
 Sheets("Feuil1").Range("A1:A100").Replace Chr(10), " ", xlValue
 'Epurer les espaces en trop
 Sheets("Feuil1").Range("A1:A100") = Application.Clean(Sheets("Feuil1").Range("A1:A100"))
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr