Problème de Synthaxe VBA

  • Initiateur de la discussion Initiateur de la discussion Rafilo13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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....
 
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.
 
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
 
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
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
904
Réponses
4
Affichages
753
Retour