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

Rechercher des sujets similaires à "amelioration modification codename"