Amélioration Modification CodeName
Bonsoir à tous et toutes,
Il y a t il un moyen d'éviter de mettre un "SH" avant ma variable dans le code ci-dessous :
Dim NouveauNom as Variant
For a = 10 to LigneFin
Test0=SH3.cells(a,4)
NouveauNom=Test0
With ThisWorkbook
.VBProject.VBComponents(.sheets(AncienNom).codeName).Name="SH" & NouveauNom
End With
Next
D'avance merci
Amicalement
Air_2
Bonsoir
Quelque chose que je ne comprends pas
AncienNom : C'est le nom de la feuille
et cette variable ne change pas dans toute la boucle
Donc en résumé tu changes le CodeName de 10 à fin de la même feuille
Où alors je ne vois pas
Bonsoir,
Je te remercie pour ta question, je n'ai pas renseigné les autres lignes de code.
Mais comme tu as pu le voir tu es dans une boucle qui commence à la ligne 10 jusqu'à x = lignefin.
et à chaque cellule rencontrée une feuille est copiée et le nom de la feuille copiée est modifié.
Oups désolé,
Je vous mets ci-après tous le code du projet :
Public LigneFin0, LigneFin1 As Variant
Public Valeur1 As String
Public ValeurReference As Date
Public ValeurReference1 As String
Public Sub July()
Call Traitement(5)
End Sub
Public Sub August()
Call Traitement(6)
End Sub
Public Sub September()
Call Traitement(7)
End Sub
Public Sub October()
Call Traitement(8)
End Sub
Public Sub November()
Call Traitement(9)
End Sub
Public Sub December()
Call Traitement(10)
End Sub
Public Sub January()
Call Traitement(11)
End Sub
Public Sub February()
Call Traitement(12)
End Sub
Public Sub March()
Call Traitement(13)
End Sub
Public Sub April()
Call Traitement(14)
End Sub
Public Sub May()
Call Traitement(15)
End Sub
Public Sub June()
Call Traitement(16)
End Sub
Public Sub Traitement(DonneeSource0)
LigneFin0 = ActiveSheet.Range("b65536").End(xlUp).Row
For a = 10 To LigneFin0
Valeur0 = ActiveSheet.Cells(a, 2)
Valeur1 = ActiveSheet.Name
ValeurReference = ActiveSheet.Cells(7, DonneeSource0)
ValeurReference1 = Valeur0
If Valeur0 <> 0 And Valeur0 <> "" Then
ActiveSheet.Cells(a, DonneeSource0) = Valeur(ValeurReference, Valeur1, ValeurReference1)
Else: End If
Next
End Sub
Public Function Valeur(Source0, Source1 As String, Source2)
Dim Data4 As Variant
Dim Data1, Data2 As String
Dim Data0 As Date
LigneFin1 = SH5.Range("a65536").End(xlUp).Row
Data = 0
For a = 10 To LigneFin1
Data0 = SH5.Cells(a, 7)
Data1 = SH5.Cells(a, 8)
Data2 = SH5.Cells(a, 9)
If Data0 = Source0 And Data1 = Source1 And Data2 = Source2 Then
Data3 = Data + SH5.Cells(a, 5)
Else: End If
Data4 = Data + Data3
Next
Valeur = Data4
End Function
Et encore désolé pour le raccourci et la formule de politesse oubliée.
D'avance merci et bonne fin de journée
Amicalement
Air_2
Bonsoir
Air_2 a écrit :une feuille est copiée et le nom de la feuille copiée est modifié.
Il faut avoir une sacrée imagination pour trouver cela
Et tu ne modifies pas le nom mais le CodeName
Suis désolé mais je ne comprends ce que tu cherches à faire en réalité
Tu dis vouloir enlever le SH devant ta variable
Cela ne passe pas comme ça ?
.VBProject.VBComponents(.sheets(AncienNom).codeName).Name= NouveauNom
Joins ta macro en entier en expliquant ce qu'elle est sensé faire et toi ce que tu veux précisément
Edit
Nos messages se sont croisés
Et enfin,
Public LigneFin As Variant
Public ValeurTest, ValeurTest1 As Variant
Public b As Integer
Public Sub Creation0()
LigneFin = SH1.Range("a65536").End(xlUp).Row
SH1.Range(Rows(10), Rows(65536)).Sort Key1:=Range("d10")
Call Creation1
End Sub
Sub Creation1()
Dim plage As Range
Dim AncienNom As Variant
Dim NouveauNom As Variant
Set plage = SH3.Cells
ValeurTest = ""
For a = 10 To LigneFin
Test0 = SH1.Cells(a, 4)
If ValeurTest <> Test0 And Test0 <> "" Then
plage.Copy
Sheets.Add , After:=Sheets(6)
ActiveSheet.Name = Test0
ActiveSheet.Paste
AncienNom = ActiveWorkbook.ActiveSheet.Index
NouveauNom = Test0
With ThisWorkbook
.VBProject.vbcomponents(.Sheets(AncienNom).CodeName).Name = "SH" & NouveauNom
End With
ActiveSheet.Range("e10").Select
ActiveWindow.FreezePanes = True
ActiveWindow.DisplayGridlines = False
ValeurTest = Test0
Else
ValeurTest = Test0
End If
Next
ValeurTest = 0
SH1.Select
Application.CutCopyMode = False
End Sub
D'avance merci et bonne fin de journée
Amicalement
Air_2
Bonsoir
Moi je n'arrive pas à suivre ta macro
Il me faut un fichier représentatif de ton fichier réel afin de tester ces macros
Il faut me dire quel SH il faut enlever ?
A te lire
Banzai64 a écrit :Bonsoir
Moi je n'arrive pas à suivre ta macro
Il me faut un fichier représentatif de ton fichier réel afin de tester ces macros
Il faut me dire quel SH il faut enlever ?
A te lire
With ThisWorkbook
.VBProject.vbcomponents(.Sheets(AncienNom).CodeName).Name = "SH" & NouveauNom
End With
Bonjour à tous et toutes,
Merci Banzai64 pour tes questions, je suis désolé pour mon retour tardif.
Tu as le code quasi complet, mais ce qui me pose problème ce trouve dans la partie de code que je te représente.
J'ai peut-être un problème de déclaration de variable, car si la valeur de NouveauNom=8000 il lui faut un caractère du type "CH" ou autre qui ne soit pas un chiffre.
Mais j'ai essayé de déclaré NouveauNom as string et rien, mais ce n'est pas bloquant mais cela va m'obliger à prévoir un code plus complexe pour atteindre mes worksheets.
J'attends encore quelques jours et je clôturerai ce post.
Amicalement,
Air_2
Bonjour
Je ne comprends pas mais j'accepte que tu ne veuilles pas joindre un fichier représentatif
Je ne comprends pas ce que tu veux faire (suis dur du côté "comprenette")
Bonne journée