pb de nom de feuille

pb de nom de feuille - VB/VBA/VBS - Programmation

Marsh Posté le 31-05-2006 à 08:37:35    

Bonjour,
Je réalise actuellement une macro pour une feuille excel qui risque de passer entre beaucoup de main, je voudrais donc qu'elle soit le plus modulable possible et j'ai un problème:
dans l'instruction:

Code :
  1. For Each Cell In Sheets("calculs" ).Range("verifications" )


Je voudrais éviter de nommer la feuille car si quelqu'un lui change de nom ça ne marchera plus.
Existe t'il une fonction "dans toutes les feuilles du classeur"? (la plage vérifications ne se trouve que dans la feuille calculs)
Merci d'avance

Reply

Marsh Posté le 31-05-2006 à 08:37:35   

Reply

Marsh Posté le 31-05-2006 à 09:18:47    

bonjour,
Il suffirait de protéger le classeur...
 
La macro suivante fait ce que tu demandes :

Code :
  1. Sub Test()
  2. Dim MemWs$, Ws$
  3. Application.ScreenUpdating = False
  4. MemWs$ = ActiveSheet.Name
  5. Application.Goto Reference:="verifications"
  6. Ws = ActiveSheet.Name
  7. Worksheets(MemWs).Activate
  8. Application.ScreenUpdating = True
  9.   For Each Cell In Sheets(Ws).Range("verifications" )
  10.     'longue suite d'instruction
  11.   Next
  12. End Sub


Une autre possibilité peut-être plus élégante :

Code :
  1. Sub Test2()
  2. Dim Ws$
  3. On Error Resume Next
  4.   For i = 1 To Worksheets.Count
  5.   Ws = Worksheets(i).Range("verifications" ).Address <> ""
  6.     If Ws <> "" Then Exit For
  7.   Next
  8. Ws = Worksheets(i).Name
  9. On Error GoTo 0
  10.   For Each Cell In Sheets(Ws).Range("verifications" )
  11.    'longue suite d'instruction
  12.   Next
  13. End Sub


Sur le même principe tu peux utiliser aussi cette fonction :

Code :
  1. Function WSN() As String
  2. Dim i%, Ws$
  3. On Error Resume Next
  4.   For i = 1 To Worksheets.Count
  5.   Ws = Worksheets(i).Range("verifications" ).Address <> ""
  6.     If Ws <> "" Then Exit For
  7.   Next
  8. WSN = Worksheets(i).Name
  9. End Function


et l'utiliser de cette manière :

Code :
  1. For Each Cell In Sheets(WSN ).Range("verifications" )


On fait comme on aime...
A+


Message édité par galopin01 le 31-05-2006 à 09:26:01

---------------
roger
Reply

Marsh Posté le 31-05-2006 à 14:17:59    

merci

Reply

Marsh Posté le 31-05-2006 à 15:29:26    

Dans VBA Propriétés - Feuil1 (Name) au lieu de Feuil1 nomme par exemple ShUne de cette façon même si qqun change le nom dans l'onglet, si ton code VBA fait référence à ShUne celui fonctionnera tjs
+ protection code VBA

Reply

Marsh Posté le 01-06-2006 à 14:41:12    

je vois bien l'idée (et c'est exactement ça que je voudrais faire ) mais je comprends pas trop justement comment faire...j'ai cliqué sur Feuil1(Name) et je suis allée dans propriété de VBA project mais après???
y'a 2 choix: général et protection.....?????

Reply

Marsh Posté le 01-06-2006 à 15:35:35    

Si tu ne comprends pas , laisses tomber la programmation ...
 
1 Dans VBAProject sélectionner Feuil1(Feuil1)
2 Propriétés - Feuil1  
3 (Name) Feuil1 à renommer par exemple en ShZobi
  et ainsi de suite pour les autres feuilles
   
  Le code VBA est bien sur à adapter en conséquence avec cette redénomination
 
  de cette façon même si qqun change le nom dans l'onglet Excel : Feuil1 Feuil2 Feuil3 etc du classeur
  comme ton code VBA fera référence à ShZobi celui fonctionnera tjs  
 
4 + protection code VBA : voir  aide en ligne


Message édité par kiki29 le 01-06-2006 à 16:03:03
Reply

Marsh Posté le 01-06-2006 à 16:18:58    

Désolée de t'avoir importuné avec mes questions stupides...
Ce qui semblait évident pour toi ne l'était pas pour moi, je vais quand même attendre un peu avant de laisser tomber la programmation.
merci quand même

Reply

Marsh Posté le 01-06-2006 à 17:39:12    

Tu as raison persévère et n'écoute pas les chibanis raleurs comme moi, et en attendant précise moi si j'ai été clair dans mes explications  
"Souvent il n'y a pas de mauvais auditeurs mais de mauvais orateurs"


Message édité par kiki29 le 01-06-2006 à 17:40:25
Reply

Marsh Posté le 01-06-2006 à 18:04:28    

Dans VBA project propriétés je n'arrive à changer que le nom du projet (même si j'avais sélectionné Feuil1), je dois être un cas désespéré tant pis pour moi :)

Reply

Marsh Posté le 01-06-2006 à 18:32:22    

Il ne faut pas changer le nom du project
Sélectionner Menu Affichage / Fenetre propriétés si ce n'est pas déjà le cas
 
et dans cette fenetre propriétés Sélectionner Feuil1
dans (name) Feuil1  taper ShLeNomQueTuVeux
l'autre name un peu plus bas correspond à l'onglet et tu n'y touches pas
Modifier le code VBA en conséquence Sheets("Feuil1" ) à remplacer par ShLeNomQueTuVeux et ainsi de suite pour le reste
Puis Protéger par mot de passe ton code VBA
 
Tout en sachant qu'il existe des utilitaires qui retrouvent/changent instantanément ces mots de passe VBA.Ce qui n'est pas le cas des mots de passe suffisamment longs avec le bon encryptage (surtout pas XOR ou là on est dans le même cas que pour les mots de passe VBA ) pour les mots de passe à l'ouverture


Message édité par kiki29 le 02-06-2006 à 07:25:52
Reply

Marsh Posté le 01-06-2006 à 18:32:22   

Reply

Marsh Posté le 02-06-2006 à 08:38:34    

Ah ben là tu vois j'ai compris :)
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed