Supprimer "Public Const WSBase" ??

Supprimer "Public Const WSBase" ?? - VB/VBA/VBS - Programmation

Marsh Posté le 08-09-2005 à 09:13:50    

Bjr,
J'aimerai supprimer proprement "Public Const WSBase" dans la macro suivante:
 

Citation :

Option Explicit  
   
Public Const WSBase As String = "Feuille D2"
 
Sub Equipe1_A()
Dim Rangebase As String
Dim RangeCount As String
Dim RangeCopy As String
Dim RowCopy As Integer
Dim i As Byte
   
   For i = 1 To 2
     
     Select Case i
        Case 1
            Rangebase = "C2"
            RangeCount = "D5:D7"
            RangeCopy = "B5"
            RowCopy = 4
        Case 2
            Rangebase = "C9"
            RangeCount = "D12:D14"
            RangeCopy = "B12"
            RowCopy = 11
             
     End Select
     
   
     Equipe Rangebase, RangeCount, RangeCopy, RowCopy
   Next i
   
End Sub


merci
 
bye


Message édité par archi57 le 08-09-2005 à 09:14:52
Reply

Marsh Posté le 08-09-2005 à 09:13:50   

Reply

Marsh Posté le 08-09-2005 à 09:19:01    

supprime la ligne [:jagstang]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 08-09-2005 à 09:35:43    

Bonjour,
Attention !
Cette expression n'est pas dans la macro... mais dans le module.
Elle ne sert à rien dans le bout de macro que tu nous montres mais elle sert probablement à quelque chose dans les autres macros du classeur.
Pour pouvoir la supprimer complètement il faut remplacer toutes les occurences de WSBase dans le projet par "Feuille D2"  
Ensuite seulement tu pourras supprimer cette ligne.
Public Const WSBase As String = "Feuille D2"  
Ok ?


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

Marsh Posté le 08-09-2005 à 11:26:59    

merci galopin01,
En faite, je veux conserver "Public Const WSBase" dans le module 1, mais le supprimer dans les autres modules comme ont me la conseillé
voici la macro compléte dans le module 2
 

Citation :

Option Explicit
   
Public Const WSBase As String = "Feuille 5"
Sub Equipe5_A()
Dim Rangebase As String
Dim RangeCount As String
Dim RangeCopy As String
Dim RowCopy As Integer
Dim i As Byte
   
   For i = 1 To 3
     
        Select Case i
        Case 1
            Rangebase = "C2"
            RangeCount = "D5:D7"
            RangeCopy = "B5"
            RowCopy = 4
        Case 2
            Rangebase = "C9"
            RangeCount = "D12:D14"
            RangeCopy = "B12"
            RowCopy = 11
        Case 3
            Rangebase = "C16"
            RangeCount = "D19:D21"
            RangeCopy = "B19"
            RowCopy = 18
     End Select
     
   
     Equipe Rangebase, RangeCount, RangeCopy, RowCopy
   Next i
   
End Sub
   
   
   
Sub Equipe(Rangebase As String, RangeCount As String, RangeCopy As String, RowCopy As Integer)
Dim Nom As String
Dim Lig1 As Integer, Lig2 As Integer
Dim i As Integer
   
   
Application.ScreenUpdating = False
   With Sheets(WSBase).Range(Rangebase)
     If InStr(1, .Value, " " ) < 1 Then Exit Sub
     Nom = Left(.Value, InStr(1, .Value, " " ) + 1) + "."
     Nom = Application.WorksheetFunction.Proper(Nom)
   End With
   
   With Sheets(Nom)
     Lig1 = .Range("A10000" ).End(xlUp).Row
     Range(.Range("H" & Lig1 + 1), .Range("H" & Lig1 + 3)).Clear
   End With
     
   With Sheets(WSBase)
     i = Application.CountA(.Range(RangeCount))
     .Range(RangeCopy & ":I" & RowCopy + i).Copy
   End With
     
   With Sheets(Nom)
     .Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
     .Range("A65536" ).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
     Range(.Range("A4" ), .Range("H" & Lig1)).Validation.Delete
     Lig1 = .Range("A65536" ).End(xlUp).Row
     Lig2 = .Range("J65536" ).End(xlUp).Row + 1
     .Range("A4:H" & Lig1).Validation.Delete
     Range(.Range("A4" ), .Range("H" & Lig1)).Sort Key1:=.Range("A4" ), Order1:=xlAscending
     Range(.Range("J" & Lig2 - 1), .Range("M" & Lig2 - 1)).AutoFill _
     Destination:=Range(.Range("J" & Lig2 - 1), .Range("M" & Lig1)), Type:=xlFillDefault
   End With
     
Sheets("Eq5" ).Activate
   
Application.ScreenUpdating = True
End Sub
 
Sub Equipe5_X()
Dim Rangebase As String
Dim RangeCount As String
Dim RangeCopy As String
Dim RowCopy As Integer
Dim i As Byte
   
   For i = 1 To 3
     
        Select Case i
        Case 1
            Rangebase = "C23"
            RangeCount = "D26:D28"
            RangeCopy = "B26"
            RowCopy = 25
        Case 2
            Rangebase = "C30"
            RangeCount = "D33:D35"
            RangeCopy = "B33"
            RowCopy = 32
        Case 3
            Rangebase = "C37"
            RangeCount = "D40:D42"
            RangeCopy = "B40"
            RowCopy = 39
     End Select
     
   
     Equipe Rangebase, RangeCount, RangeCopy, RowCopy
   Next i
   
End Sub


Message édité par archi57 le 08-09-2005 à 11:29:03
Reply

Marsh Posté le 08-09-2005 à 21:29:37    

bonsoir archi57,
T'es en train de nous faire une drôle de cuisine !
Tu as déjà une déclaration  
Public Const WSBase As String = "Feuille D2" dans un module
Public Const WSBase As String = "Feuille 5" dans un module
T'as combien de modules et combien de déclarations WSBase ?
 
Normalement il ne devrait y en avoir qu'une en tout et pour tout
ou alors si elles sont toutes différentes il ne faut pas les déclarer Public
 
De plus la lecture de ton précédent Topic me laisse à penser que l'on s'achemine vers des emm... en forme de poupées russes.
En effet tu sembles avoir une macro équipe qui fait référence à la feuilleD2
une macro Equipe5 qui fait référence à la feuille5  
(le tout au travers des mêmes Public Constantes toutes différentes)  :heink:  
 
Il me parait urgent de stopper les frais et de faire une analyse globale de ta cuisine avant d'entreprendre un hachis sauvage.
Si je peux avoir une vue générale sur TOUTES les macros (de préférence avant que tu aies commencé à faire des modifs de ce genre) je veux bien examiner la situation.
 
Si ton classeur n'est pas trop volumineux ni confidentiel tu peux le mettre ici
sinon tu me l'envoies directement en pièce jointe :
http://perso.wanadoo.fr/galopin01/images/email.jpg
A+
 


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

Marsh Posté le 09-09-2005 à 09:11:37    

merci galopin01 je vais t'envoyer mon fichier par email
bye

Reply

Marsh Posté le 13-09-2005 à 09:56:19    

bonjour,  
j'ai parfois des doutes sur le fonctionnement de ma messagerie. As-tu reçu mes différents messages ?
Je t'avais envoyé un code qui répondait exactement à ta question (à dupliquer dans chaque module)
Je t'avais envoyé également un fichier démo je le joins à nouveau ici
Contrairement au précédent celui-ci est débogué tu peux donc te servir de ce classeur sans problème... (enfin, en principe!)
A+


Message édité par galopin01 le 13-09-2005 à 09:59:59

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

Marsh Posté le 13-09-2005 à 16:08:14    

merci,mais je n'ai reçu aucun mail de ta part !!!
RDV en message privé si tu veux ??


Message édité par archi57 le 13-09-2005 à 16:22:06
Reply

Marsh Posté le 13-09-2005 à 21:14:36    

bonsoir,  
ma réponse est dans la MP
Comme je pense que celà est peut être un peu indigeste, je résume.
je t'ai mis en MP un code qui remplace et supprime WSBase dans un module
mais celà ne présente guère d'intérêt et de toute façon tu ne peux pas laisser subsister cette constante dans aucun module.
Il faut donc gérer la suppression de cette constante au coup par coup et module par module. Encore une fois celà ne présente guère d'intérêt (si ce n'est l'orthodoxie de la syntaxe)
 
Je t'ai donc mis un autre classeur ou j'ai essayé de faire quelque chose de mieux optimisé.
 
Au moment ou je rédige je me rends compte que je peux encore te concocter une variante intermédiaire qui sera peut-être plus lisible pour toi et peut-être aussi plus proche de ce que tu attendais.
 
Je te fignole ça et je te mettrai cette seconde solution dans un moment.
A+


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

Marsh Posté le 13-09-2005 à 21:58:23    

re...
50 minutes pour te pondre cette version intermédiaire ici !
Inutile de te dire que je n'ai rien vérifié ni débogué,
à fortiori, je n'ai pas non plus éliminé les petites bricoles que j'avais épuré dans ton code, dans la version 1
A toi de voir, vérifie, cherche et comprends !
j'ai juste remis de l'ordre dans le nom de tes modules pour qu'on s'y retrouve plus facilement. (ils se trouvent désormais en tête de liste)
je reste à ta disposition.
A+


Message édité par galopin01 le 13-09-2005 à 22:07:21

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

Marsh Posté le 13-09-2005 à 21:58:23   

Reply

Marsh Posté le 14-09-2005 à 12:30:40    

Bonjour,
Je t'ai juste mis un petit commentaire en MP pour éclaircir un peu le fonctionnement de la Sub Jet (dans la première version de mes cogitations...).
La v2 coule de source, je pense ?
A+


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

Sujets relatifs:

Leave a Replay

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