erreur vba sur sheets.select et criteriarange

  • Initiateur de la discussion Initiateur de la discussion bugg
  • 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 !

bugg

XLDnaute Junior
Bonjour,
En débutante,
Ca fait plusieurs jours que je bloque sur ce code, et je ne comprends pas pourquoi,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("a4")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("Feuil3").Select
Sheets("Feuil3").Range("a19:e" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("a5:a6"), CopyToRange:=Range("g4:j4"), Unique:=False
End If
End Sub


pourriez-vous m'aider
merci d'avance
 

Pièces jointes

Re : erreur vba sur sheets.select et criteriarange

Bonjour bugg,

Ton code n epeut pas fonctionner : Tu fais référence à "Feuil3" qui n'existe pas dans ton fichier. En imaginant que "Feuil3" correspond à "HIST Factures", tu appliques un filtre sur le champ "a19:e7" qui est vide d'une part et qui ne correspond à rien d'autre part. Ensuite, la zone de critères est "a5:a6" à priori de la feuille en cours "Hist Client", ces celluless contenant RIEN et "Nom :". Bien sûr, ceci n'est pas compris par le VBA.

En espérant t'avoir aidé à y voir plus clair,

A+
 
Re : erreur vba sur sheets.select et criteriarange

Bonjour Bugg

La "feuille3" n'existant pas il y a lieu tout d'abord de remplacer
Sheets("Feuil3")
par
Sheets("Hist Factures")

mais ça ne solutionne pas le problème car ça beuge encore ici:

Sheets("Hist Factures").Range("a19:e" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("a5:a6"), CopyToRange:=Range("g4:j4"), Unique:=False


........... je n'ai pas compris exactement ce que tu veux faire

à+
Philippe

Édit: Bonjour Fred00
 
Re : erreur vba sur sheets.select et criteriarange

Bonjour à tous,

petite remarque au passage, ne précisant pas la feuille auquels les objets "range" font référence, comme le code est dans un module de feuille, cela s'appliquera à la feuille dans lequel se trouve le code...

bon après midi
@+
 
Re : erreur vba sur sheets.select et criteriarange

Bonsoir bugg, Pierrot,

Voici le fichier corrigé. Plusieurs erreurs sur la référence aus feuilles de calcul. Ensuite, il y avait incohérence entre le critère "A3" dans "Histo Client" et le champ "A1" dans la feuille "Histo fournisseurs".

A+
 

Pièces jointes

Dernière édition:
Re : erreur vba sur sheets.select et criteriarange

Salut bugg,
voici la macro commentée et modifiée quelque peu. Je me suis permis de faire une ou deux petites modifications sur le code de Fred0o (que je salue au passage 🙂 )

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet 'Déclare la variable sh qui représente le nom d'une feuille
    Dim DL As Integer 'Déclare une variable de type integer
    Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("a4")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False 'On enlève les événements pour ne pas redéclencher la macro
        'événementielle lors du clearcontents qui suit
        Range("G3:K" & Range("G65000").End(xlUp).Row).ClearContents 'Efface le contenu du range
        Application.EnableEvents = True 'remet les événements
        Set sh = Sheets("HIST Factures") 'Set la variable sh
        DL = sh.Range("A65000").End(xlUp).Row 'Détermine la dernière ligne
        sh.Range("A1:E" & DL).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A3:A4"), CopyToRange:=Range("G4"), Unique:=False 'Set le filtre
    End If
    Set sh = Nothing 'Vide la slut de mémoire
End Sub

En espérant que cela t'éclaires un peu,

Cordialement,

Étienne
 
Re : erreur vba sur sheets.select et criteriarange

Bonsoir bugg, bonsoir le forum

et puis-je abuser et te demander l'explication du dim sh,sh que je ne connais pas.

Dans le code, il y a :

Code:
Dim sh, dl

Ce qui correspond à la déclaration des variables sh et dl.
Ici, sh est une feuille (sheet) et dl est pour la "dernière ligne".
Personnellement, j'aurais défini les variables de cette façon :

Code:
Dim sh as Worksheet
Dim dl as Integer

car sinon elles sont de type Variant.
Un peu de documentation sur le sujet ici : Utiliser les variables en VBA Excel

A+

Edit: Bonsoir Etienne
 
Re : erreur vba sur sheets.select et criteriarange

Bonjour bugg,

J'ai trouvé 3 problèmes, en commentaire dans le code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet 'Déclare la variable sh qui représente le nom d'une feuille
   Dim DL As Integer 'Déclare une variable de type integer
   Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("a4")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False 'On enlève les événements pour ne pas redéclencher la macro
       'événementielle lors du clearcontents qui suit
       
       'Problème 1 : Plage a changé, maintenant en G4
       Range("G4:K" & Range("G65000").End(xlUp).Row).ClearContents 'Efface le contenu du range
       Application.EnableEvents = True 'remet les événements
       
       
       'Problème 2 : Nom de la feuille a changé
       Set sh = Sheets("Histo") 'Set la variable sh
       DL = sh.Range("A65000").End(xlUp).Row 'Détermine la dernière ligne
       
       'Problème 3 : Pour que le filtre fonctionne, il faut que la cellule A3 dans
       'la feuille HistCLTS soit appelé comme la cellule A1 dans Histo, sinon
       'le CriteriaRange ne fonctionne pas.
       'Donc, appeler la cellule A3 Code Clts
       sh.Range("A1:E" & DL).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("A3:A4"), CopyToRange:=Range("G4"), Unique:=False 'Set le filtre
   End If
    Set sh = Nothing 'Vide la slut de mémoire
   
  
End Sub

A+
 
Re : erreur vba sur sheets.select et criteriarange

Alors là, je me suis arrachée les cheveux,
c'est pas manque de l'avoir eu devant les yeux depuis des jours, mais je n'avais pas remarqué "Code Clts" ds A3
merci, merci beaucoup à vous tous, maintenant ça fonctionne!!!!

ci-joint le grrr "Code Clts" modifié

merci encore pour votre patience et toutes vos explications !
 

Pièces jointes

- 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
2
Affichages
772
Réponses
2
Affichages
506
Retour