Extraction dynamique avec critere en formule

Le
Apitos
Bonjour,

Je voudrais extraire des données de la colonne A vers la colonne C à
l'aide d'une macro, mais dans le parametre CriteriaRange je veux
appliquer une formule.

Est-ce possible ?

Voila la macro :

Sub essai()
' catégorie
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
[A1:A20].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[E1].Formula = "=STXT(A1;CHERCHE(" - ";A1)+1;NBCAR(A1)-
CHERCHE(" - ";A1)-2)", _
CopyToRange:=Range("CI:C20"), Unique:=True
Range("C1:C20").Sort key1:=Range("C1")
Application.EnableEvents = True
End If
End Sub

Bon le deboggeur me signal une erreur dans la ligne :

If Target.Column = 1 And Target.Count = 1 Then

Erreur d'execution '424'. Objet requis.

Merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
anonymousA
Le #4396891
Bonjour,

pour le débogguer la question est " qu'est ce qu'est target ?" . En fait
ta macro doit être une adapatation d'une procédure evenementielle dans
laquelle par défaut VBA sait que Target est une cellule et même en
connait toutes le propriétés locales auquel cas il n'existe pas de plantage.
Mais quand c'est toi qui écris une procédure ,il faut bien définir ce
qu'est Target car autrement VBA par défaut reconnait bien qu'il s'aggit
d'une varaible de type Variant et sans doute plutot de ctype range car
associée à une propriété Coolumn mais comme Target n'a pas recu
d'affectation par un mot clé Set , alors pour VBA Target est Nothing et
Nothing.column n'a pas de sens.
Tout ce long laius pour te dire qu'il faut que tu affectes quelque chose
de type range à Target avant de lancer ta macro.
Par exemple, set target=range("A1:A10")

A+


Bonjour,

Je voudrais extraire des données de la colonne A vers la colonne C à
l'aide d'une macro, mais dans le parametre CriteriaRange je veux
appliquer une formule.

Est-ce possible ?

Voila la macro :

Sub essai()
'--- catégorie
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
[A1:A20].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[E1].Formula = "=STXT(A1;CHERCHE(" - ";A1)+1;NBCAR(A1)-
CHERCHE(" - ";A1)-2)", _
CopyToRange:=Range("CI:C20"), Unique:=True
Range("C1:C20").Sort key1:=Range("C1")
Application.EnableEvents = True
End If
End Sub

Bon le deboggeur me signal une erreur dans la ligne :

If Target.Column = 1 And Target.Count = 1 Then

Erreur d'execution '424'. Objet requis.

Merci de votre aide.



LSteph
Le #4396871
Bonjour,

Que cherche tu à désigner par Target ?
(qui s'utilise dans les évenementielles lorsque déclaré dans les param
de la private sub)

également,
Application.EnableEvents = False
As-tu à te préserver d'autres évenementielles?

Dans quels modules tout cela est-il écrit?

Un petit tour par http://cjoint.com serait pas mal.

@+

lSteph

Bonjour,

Je voudrais extraire des données de la colonne A vers la colonne C à
l'aide d'une macro, mais dans le parametre CriteriaRange je veux
appliquer une formule.

Est-ce possible ?

Voila la macro :

Sub essai()
'--- catégorie
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
[A1:A20].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[E1].Formula = "=STXT(A1;CHERCHE(" - ";A1)+1;NBCAR(A1)-
CHERCHE(" - ";A1)-2)", _
CopyToRange:=Range("CI:C20"), Unique:=True
Range("C1:C20").Sort key1:=Range("C1")
Application.EnableEvents = True
End If
End Sub

Bon le deboggeur me signal une erreur dans la ligne :

If Target.Column = 1 And Target.Count = 1 Then

Erreur d'execution '424'. Objet requis.

Merci de votre aide.



Apitos
Le #4396831
Voila un exemple de ce que je voudrais avoir.

http://cjoint.com/?eimKyN1mvP
Alicante
Le #4396781
On 8 avr, 12:38, "Apitos"
Voila un exemple de ce que je voudrais avoir.

http://cjoint.com/?eimKyN1mvP


Voila un code :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
Application.EnableEvents = False
[A1:A100].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[J2].Formula = "=STXT(A1;CHERCHE('-';A1)+1;NBCAR(A1)-
CHERCHE('-';A1)-2)", _
CopyToRange:=Range("C2:C100"), Unique:=True
Range("C2:C100").Sort key1:=Range("C2")
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

Alicante
Le #4396771
On 8 avr, 12:38, "Apitos"
Voila un exemple de ce que je voudrais avoir.

http://cjoint.com/?eimKyN1mvP


Voila un code :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
Application.EnableEvents = False
[A1:A100].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[J2].Formula = "=STXT(A1;CHERCHE('-';A1)+1;NBCAR(A1)-
CHERCHE('-';A1)-2)", _
CopyToRange:=Range("C2:C100"), Unique:=True
Range("C2:C100").Sort key1:=Range("C2")
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

JB
Le #4396761
Bonjour,

http://cjoint.com/?eioWDb0C1f

JB

On 8 avr, 14:37, "Alicante"
On 8 avr, 12:38, "Apitos"
Voila un exemple de ce que je voudrais avoir.

http://cjoint.com/?eimKyN1mvP


Voila un code :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False
Application.EnableEvents = False
[A1:A100].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[J2].Formula = "=STXT(A1;CHERCHE('-';A1)+1;NBCAR(A1)-
CHERCHE('-';A1)-2)", _
CopyToRange:=Range("C2:C100"), Unique:=True
Range("C2:C100").Sort key1:=Range("C2")
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub



Apitos
Le #4396611
Heureux de te voir JB.

En fait la colonne Produit est remplie dynamiquement par un code que
tu m'as file depuis quelque temps.

J'aimerais aussi que la colonne Produit2 soit faite de la même maniere
tout en vouyant l'extraction de ce qui est entre les (-) se faire en
meme temps.

Merci.
JB
Le #4396581
Bonsoir,

Je ne suis pas sûr d'avoir compris la question:

-Documente la colonne B (famille) lors de la saisie du produit en
colonne A
-Documente la colonne J (liste des familles sans doublons) lors de la
saisie en colonne A

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
p1 = InStr(Target, "-")
P2 = InStr(p1 + 1, Target, "-")
If p1 > 0 And P2 > 0 Then
Target.Offset(0, 1) = Mid(Target, p1 + 1, P2 - p1 - 1)
[B1:B1000].AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=[J1], Unique:=True
End If
End If
End Sub

http://cjoint.com/?eiwRZ00phY

Cordialement JB


On 8 avr, 21:42, "Apitos"
Heureux de te voir JB.

En fait la colonne Produit est remplie dynamiquement par un code que
tu m'as file depuis quelque temps.

J'aimerais aussi que la colonne Produit2 soit faite de la même maniere
tout en vouyant l'extraction de ce qui est entre les (-) se faire en
meme temps.

Merci.


Apitos
Le #4396121
Bonjour JB,

Quand j'integrerai ton code dnas mon travail rien ne marche ...

Bon voila un exemple :

http://cjoint.com/?ejnCw0xSfQ

Merci.
Apitos
Le #4395761
Bonjour JB,

Quand j'integrerai ton code dnas mon travail rien ne marche ...

Bon voila un exemple :

http://cjoint.com/?ejnCw0xSfQ

Merci.


Une solution SVP !?

Publicité
Poster une réponse
Anonyme