Problème de Synthaxe VBA

Rafilo13

XLDnaute Junior
Bonjour a tous,

J'avais déjà soliciter le forum pour le problème qui suit, mais je n'arrive pas a adapter la solution qui m'a étais proposé.

Dans mon projet je cherche a un moments a filtrer a partir d'une première feuille un tableau se trouvant sur une feuille 2.

Cependant ma cellule critère doit être variable.

SI D13<> "Aucun" ma cellule de critère est D13
SI D13 = "Aucun" et que D11<> "Aucun" ma cellule de critère est D11
SI D13="Aucun et que D11="Aucun" ma cellule de critère est D9

Voici la macro que l'on ma proposé (j'ai juste modifier les cellules) :

Dim c As Range
With Sheets("Vision Siren")
If .Range("D13") = "Aucun" And .Range("D11") = "Aucun" Then
Set c = .Range("D9")
ElseIf .Range("D11") = "Aucun" Then Set c = .Range("D9")
Else
Exit Sub
End If
End With
Sheets("D1ST).AutoFilter Field:=11, Criteria1:=c.Value

Cependant vu que m'etais mal expliquer la macro ne repondais pas a toutes mes attentes j'ai donc desider d'essayer de la modifier mais bien evidement sans succès.

Mon Code :

Sheets("D1ST").Select
Dim c As Range
With Sheets("Vision Siren")

If .Range("D13") <> "Aucun" Then Set c = .Range("D13")
ElseIf .Range("D13") = "Aucun" Then Set c = .Range("D11")
ElseIf .Range("D13") = "Aucun" And .Range("D11") = "Aucun" Then Set c = .Range("D9")
Else
Exit Sub
End If
End With

Sheets("D1ST").AutoFilter Field:=11, Criteria1:=c.Value

Quand j'essaye de l'executer il apparait une erreur "Else sans If".

Si quelqu'un pouvais m'aider. Je vous remercie par avance.

Bonne journée
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de Synthaxe VBA

Re,

le mieux eut été de rester sur le même file :
https://www.excel-downloads.com/threads/vba-selection-de-critere-conditionnel.165923/

pour le "else sans if"
Code:
If .Range("D13") <> "Aucun" Then 
Set c = .Range("D13")
ElseIf .Range("D13") = "Aucun" Then Set c = .Range("D11")
ElseIf .Range("D13") = "Aucun" And .Range("D11") = "Aucun" Then Set c = .Range("D9")
Else
Exit Sub
End If

il faut aller à la ligne après le 1er "then"....

A noter ta 3ème condition ne sera jamais évalu évaluée car aura répondu forcement OUI à l'une des 2 premières....
 

Rafilo13

XLDnaute Junior
Re : Problème de Synthaxe VBA

Re, merci encore.

J'ai cependant une question est-il possible de remplir c'est 3 conditions en modifiant la macro ?

Par exemple en mofiant mon premier ElseIf avec quelque chose du genre :

ElseIf .Range("D13") = "Aucun" And .Range("D11")<>"Aucun" Then Set c = .Range("D11")

Ou cela te parait compliquer.

Merci encore Pierrot93 je ferai gaff au fil la prochaine fois.

Bonne journée a tous

Bonne journée.
 

Rafilo13

XLDnaute Junior
Re : Problème de Synthaxe VBA

Bonjour, j'ai encore un petit problème :

J'ai essayé ensuite d'adapter cette formule pour créer un deuxieme variable me permettant de choisir a la fois la cellules de critères, mais aussi sur quel "field" ce critère doit s'appliquer.

Seulement problème cela ne marche pas je vous montre mon code si quelqu'un peu voir ce qu'il ne va pas :


Sub Rechercheventevisionsiren()

Sheets("photo").Visible = True

Sheets("Photo").Select
Application.ScreenUpdating = False

' Filtrage Client
Dim c As Range
With Sheets("Vision Siren")

If .Range("D13") = "Aucun" And .Range("D11") <> "Aucun" Then
Set c = .Range("D11")
ElseIf .Range("D13") = "Aucun" And .Range("D11") = "Aucun" Then Set c = .Range("D9")
ElseIf .Range("D13") <> "Aucun" Then Set c = .Range("D13")

Else
Exit Sub
End If
End With

Dim d As Variant
With Sheets("Vision Siren")

If .Range("D13") = "Aucun" And .Range("D11") <> "Aucun" Then
Set d = 10
ElseIf .Range("D13") = "Aucun" And .Range("D11") Then Set d = 9
ElseIf .Range("D13") <> "Aucun" Then Set d = 11

Else
Exit Sub
End If

Sheets("D1ST").AutoFilter field:=d.Value, Criteria1:=c.Value


End Sub

Merci par avance et bonne matinée a tous
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de Synthaxe VBA

Bonjour,

ceci ne peut pas fonctionner :
Code:
Dim d As Variant
 Set d = 10

l'instruction "set" attribut une référence d'objet, pour affecter la valeur 10 à cette variable, remplacer le "set" par "let", ou ne rien mettre, ce qui est le plus souvent fait.. et autant bien définir le type...
Code:
Dim d as Byte
d = 10

Après pas regardé le reste, mais tu as un "exit sub" qui te fait sortir de la procédure au cas ou au aucun des tests n'est vérifié..

bonne soirée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 296
Membres
104 092
dernier inscrit
karbone57