XL 2016 format du code

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

doclaude

XLDnaute Nouveau
bonjour
j'ai une partie du code d'une macro qui ne se formate pas correctement (la majuscule en début de mot clé)
selection.AutoFilter
selection.AutoFilter Field:=2, Criteria1:="="
selection.AutoFilter Field:=21, Criteria1:=Array("+21 ans", "-21 ans"), Operator:=xlFilterValues
selection.SpecialCells(xlVisible).Select
selection.Copy Sheets("Sabbatiques").Range("a1")
le code fonctionne correctement, c'est juste que je ne comprends pas
c'est la première fois que cela m'arrive et c'est un peu dérangeant
Quelqu'un a une idée ?
merci d'avance
Claude
 
Bonjour le fil, doclaude, sylvanu

•>doclaude
Ainsi écrit (TestA) je n'ai pas de majuscule
PS: TestB fait la même chose (ou presque) 😉
VB:
Sub Test_A()
Dim selection As Range
Set selection = Range("$A$1:$U$8")
selection.AutoFilter
selection.AutoFilter Field:=2, Criteria1:="="
selection.AutoFilter Field:=21, Criteria1:=Array("+21 ans", "-21 ans"), Operator:=xlFilterValues
selection.SpecialCells(xlVisible).Select
selection.Copy Sheets("Sabbatiques").Range("a1")
End Sub
Sub Test_B()
ActiveSheet.Range("$A$1:$U$8").AutoFilter Field:=21, Criteria1:=Array("+21 ans", "-21 ans"), Operator:=xlFilterValues
ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Copy Sheets("Sabbatiques").Range("a1")
End Sub
 
bonjour
c'est bête :
d'habitude quand j'écris le code
selection.delete
ou
selection.autoFilter

l'éditeur me transforme aussitôt le code en
Selection.Delete
ou
Selection.AutoFilter
(ce qui est bien pratique pour trouver les erreurs)

et là ça ne marche pas (comme montré dans le bout de code du premier message)
ce qui n'empêche pas le code de fonctionner normalement
Claude
 
Bonjour Doclaude, Staple,

Juste un essai qui expliquerait :
Cas où selection est déclaré comme variable :
VB:
Sub Test1()
Dim selection As Range
Set selection = Range(("A:A"))
selection.AutoFilter
End Sub
Cas où selection est utilisé comme mot clé :
Code:
Sub test()
Range("A:A").Select
Selection.AutoFilter
End Sub
Utilisé comme variable, selection s'écrit comme déclaré.
Utilisé comme mot clé, selection prend automatiquement une majuscule car reconnue par le VBA.

Ceci dit, utiliser selection comme variable ... 😉
 
Re,
Staple, il est rare que je zappe des post surtout émanant de vous.
Je donnais juste un petit exemple peut être plus explicite à Doclaude car dans votre TestB il n'y avait pas le mot clé Selection.
C'est tout. Juste un petit addon. 🙂
 
bonjour
merci à vous de vos réponses
effectivement à un moment j'ai nommé une macro"Selection"
(je devais avoir la tête ailleurs)
ça a fichu le b... et j'ai cherché puis renommé la macro
je pense que c'est là que les problèmes de format sont apparus
mais avoir renommé la sub n'a pas corrigé le problème
bon ! le code fonctionne normalement, c'est le principal
je vais essayer de détruire le code et le reconstituer
🙂
Claude
 
Re,

•>sylvanu
Dans Test_A, il y avait selection, non?
Le Test_B, c'était juste un bonus.

Mais m'est avis, qu'on se trompe tout les deux 😉
(Nul doute que docclaude se souviendrait d'avoir mis dans son code un truc du genre: Dim selection As Range, non ?)

PS: Sans soute trop habitué aux échanges d'antan entre XLDiens, où nous renvoyions la balle avec des echanges du genre
"Tout comme X dans le message#3, je penche pour la même piste etc..."
 
Re,
Pour une raison qui m'échappe, il est un phénomène étrange.
Si on met ce code dans le même module :
VB:
Sub Test1()
Dim selection As Range
Set selection = Range(("A:A"))
selection.AutoFilter
End Sub

Sub Test2()
Range(("A:A")).Select
selection.AutoFilter
End Sub
Et bien dans le Test2 selection ne prend pas de majuscule alors qu'il n'est pas déclaré en variable, et que son comportement est bien celui de Selection.
Bizarre, mais bon, on est quand même en dehors des règles minimales de codage.
 
Re

•>sylvanu
cf mon édition du précédent message
Sinon pourquoi les deux ( en trop ?)
Effectivement idem chez moi
VB:
Sub Test1()
Dim selection As Range
Set selection = Range("A:A")
selection.AutoFilter
End Sub
Sub Test2()
Range("A:A").Select
selection.AutoFilter
End Sub
 
- 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
1
Affichages
409
Réponses
3
Affichages
864
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Réponses
19
Affichages
2 K
Retour