Se connecter avec
S'enregistrer | Connectez-vous

Activesheet

Dernière réponse : dans Programmation

Bonjour à tous,
J’ai un petit problème ! je veux faire une validation de données d’après une liste mais je voudrais pouvoir l’appliquer aux 12 feuilles de mon classeur sans avoir à dupliquer 12 fois la macro. Je ne parviens pas à trouver la bonne commande qui s’appliquerait à la feuille active et non au mois comme ci-dessous..
Merci de votre aide.
Voici la macro enregistrée.

  1. Sub Macro1()
  2. ' Macro1 Macro
  3. activeSheets.Select
  4. Range("Février[Type]").Select
  5. With Selection.Validation
  6. .Delete
  7. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _
  8. Operator:=xlBetween, Formula1:="=type"
  9. .IgnoreBlank = True
  10. .InCellDropdown = True
  11. .ErrorTitle = ""
  12. .ErrorMessage = "eeeee"
  13. .ShowInput = True
  14. .ShowError = True
  15. End With
  16. Range("D71").Select
  17. End Sub

Autres pages sur : activesheet

Lassé par la pub ? Créez un compte

Met ton code entre balise code , ça sera plus lisible ( tu edites > +d'options> code ) , je me permet de te le dire car je sais qu'on va te le demander ^^ .

Pour ton problème , je pense que tu devrais regarder du coté des fonctions VBA , tu peut créer ta propre fonction qui va répondre a tes besoins , mais je ne suis pas certaine donc attend des gens plus experimentés . ( F1 sur excel ou recherche sur google ) .


Bonne chance .

Aurélie .

aurelie1985 a dit :
Met ton code entre balise code , ça sera plus lisible ( tu edites > +d'options> code ) , je me permet de te le dire car je sais qu'on va te le demander ^^ .

Pour ton problème , je pense que tu devrais regarder du coté des fonctions VBA , tu peut créer ta propre fonction qui va répondre a tes besoins , mais je ne suis pas certaine donc attend des gens plus experimentés . ( F1 sur excel ou recherche sur google ) .


Bonne chance .

Aurélie .


Merci Aurélie
j'ai déjà, avant d'écrire sur ce forum essayé diversses solutions aide excel ou sur différents sites de formation excel, mais je n'ai pas trouvé.
merci encore
Expert Programmation

Salut,

Merci Aurélie de faire la police pour moi. En fait, moi, je ne le fais que pour vous ;) 

Mais si, Mercure tu as trouvé. Au moins le bon site :) 

---------------------

Alors, tout d'abord, il faut arrêter de se fier aux objets actifs.
Qu'est-ce qui te garantit que la cellule, la feuille, le classeur actif vont le rester, actifs ?

Ensuite, tu donnes un nom à une cellule - Février[Type]. C'est bien mais si tes feuilles ont des cellules nommées différemment, il va failloir faire autrement.
Par exemple, utiliser leurs coordonnées, avec Range() ou Cells().

Pour finir, pourquoi cette sélection de D71, à la fin ?
  1. With mafeuille.Cells(3, 4).Validation
  2. .Delete
  3. .Add ...
  4. ...
  5. End With


Eh, évidemment, il reste à fixer mafeuille.
Comme ça, par exemple :
  1. For Each mafeuille In Worksheets
  2. ...
  3. Next

zeb a dit :
Salut,

Merci Aurélie de faire la police pour moi. En fait, moi, je ne le fais que pour vous ;) 

Mais si, Mercure tu as trouvé. Au moins le bon site :) 

---------------------

Alors, tout d'abord, il faut arrêter de se fier aux objets actifs.
Qu'est-ce qui te garantit que la cellule, la feuille, le classeur actif vont le rester, actifs ?

Ensuite, tu donnes un nom à une cellule - Février[Type]. C'est bien mais si tes feuilles ont des cellules nommées différemment, il va failloir faire autrement.
Par exemple, utiliser leurs coordonnées, avec Range() ou Cells().

Pour finir, pourquoi cette sélection de D71, à la fin ?
  1. With mafeuille.Cells(3, 4).Validation
  2. .Delete
  3. .Add ...
  4. ...
  5. End With


Eh, évidemment, il reste à fixer mafeuille.
Comme ça, par exemple :
  1. For Each mafeuille In Worksheets
  2. ...
  3. Next


Bonjour à tous et merci
j'ai testé la solution que j'avais posté mais je ne la vois pas je la réédite

  1. Sub Validation_type()
  2. '
  3. Range("d3:d100").Select
  4. With Selection.Validation
  5. .Delete
  6. .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _
  7. Operator:=xlBetween, Formula1:="=typeV"
  8. .IgnoreBlank = True
  9. .InCellDropdown = True
  10. .InputTitle = ""
  11. .ErrorTitle = ""
  12. .InputMessage = ""
  13. .ErrorMessage = ""
  14. .ShowInput = True
  15. .ShowError = True
  16. End With
  17. Range("d5").Select
  18. End Sub

Le range à la fin cest pour me repositionner dans la feuile et sotir de la sélection. Range("d71").Select, était une erreur. merci encore et à bientot.
Expert Programmation

Fais attention à toi, je suis TRES susceptible.
Mais je ne suis ni méchant, ni impatient.
Alors je vais t'expliquer. Et si tu le demandes, continuer à te proposer d'autres choses. Et à les expliquer..... :ange: 

L'enregistreur fait ce qu'il peut, soit peu. Et ce qu'il enregistre, ce sont des manipulation à la main, qu'il programme digne de ce nom ne doit pas toujours faire. Par exemples, sélectionner quoi que ce soit avant de s'en servir est inutile, voire consommateur de ressource ; se servir du presse-papier pour retenir des informations uniquement utile au programme est strictement à prohiber quand on programme, etc.

Donc on enregistre :
  1. Range("A1").Select
  2. Selection.Copy
  3. Range("B1").Select
  4. Paste

Mais on corrige comme ceci, pour retirer toute sélection et toute manipulation par le presse-papier inutiles :
  1. Range("A1").Copy Destination:=Range("B1")

Pour moi, c'est tellement plus clair et plus facile !

----------------

Ce que tu proposes est la solution ?
Parce que tu n'expliques pas grand' chose, toi ;) 

zeb a dit :
Fais attention à toi, je suis TRES susceptible.
Mais je ne suis ni méchant, ni impatient.
Alors je vais t'expliquer. Et si tu le demandes, continuer à te proposer d'autres choses. Et à les expliquer..... :ange: 

L'enregistreur fait ce qu'il peut, soit peu. Et ce qu'il enregistre, ce sont des manipulation à la main, qu'il programme digne de ce nom ne doit pas toujours faire. Par exemples, sélectionner quoi que ce soit avant de s'en servir est inutile, voire consommateur de ressource ; se servir du presse-papier pour retenir des informations uniquement utile au programme est strictement à prohiber quand on programme, etc.

Donc on enregistre :
  1. Range("A1").Select
  2. Selection.Copy
  3. Range("B1").Select
  4. Paste

Mais on corrige comme ceci, pour retirer toute sélection et toute manipulation par le presse-papier inutiles :
  1. Range("A1").Copy Destination:=Range("B1")

Pour moi, c'est tellement plus clair et plus facile !

----------------

Ce que tu proposes est la solution ?
Parce que tu n'expliques pas grand' chose, toi ;) 

Merci Zeb pour tes explications
Nous partons chez nos enfants pour une huitaine mais rentrant je mettrais certainement à contribution, si tu me le permet,
Bonne soirée à bientôt
Lassé par la pub ? Créez un compte