nom onglet classeur A egal nom onglet classeur B

charette63

XLDnaute Occasionnel
Bonjour à toutes et tous,

j'ai reçu de Robert (que je remercie encore au passage) une macro permettant de "copier" le nom des onglets d'un premier classeur sur un second classeur. Soit si "Feuil2" classeur A s'appelle Dupont, la "Feuil2" du classeur B s'appellera Dupont.

Hormis la "Feuil1", les onglets du classeur A sont "rangés" (sur la "ligne" d'onglets) par ordre alphabétique.

voici la macro:
Code:
Sub Nomonglet()
'Macro permettant de lire le nom des onglets d'un classeur
'et de les copier dans un second classeur par rapport aux n°"Feuil"

Dim cs As Workbook 'déclare la variable cs (CLasseur Source)
Dim cc As Workbook 'déclare la variable cc (CLasseur Cible)
Dim no As String 'déclare la variable no (Nom de l'Onglet)
Dim x As Integer 'déclare la variable x (incrément d'onglet)
Dim y As Integer 'déclare la variable y (incrément d'onglet)

Set cs = ThisWorkbook 'définit le classeur source
Set cc = Workbooks("fiche perso nursing 1001.xls") 'définit le classeur cible

    For x = 2 To cc.Sheets.Count 'boucle 1 : sur tous les onglets du classeur source
        If cc.Sheets(x).CodeName = "Feuil" & x Then no = cc.Sheets(x).Name 'condition : si l'onglet a pour Codename "Feuilx",
                                                                                       'définit le la variable no
    For y = 2 To cs.Sheets.Count 'boucle 2 : sur tous les onglets du classeur cible
        If cs.Sheets(y).CodeName = "Feuil" & x Then cs.Sheets(y).Name = no: Exit For 'condition : si l'onglet a pour Codename "Feuilx",
                                                                                                 'renomme l'onglet, sort de la boucle
    Next y 'prochain onglet du classeur cible
    Next x 'prochain onglet du classeur source
End Sub

La macro coince à ce niveau: cs.Sheets(y).Name = no

Je crée deux classeurs "test" (avec 6 onglets--->important pour la suite) et je remarque que la macro fonctionne si les onglets sont "rangés" par numero de feuille (Feuil1,Feuil2,...)

Je trouve sur le net deux macros permettant de "ranger" les onglets par numero
Code:
Sub ongletCodeName()
'Macro permettant de placer les onglets par ordre des n° de "Feuil"

  Application.ScreenUpdating = False
  Dim i As Integer
  Dim j As Integer
  For i = 2 To Sheets.Count
     For j = i To Sheets.Count
        If UCase(Sheets(j).CodeName) < UCase(Sheets(i).CodeName) Then
          Sheets(i).Move before:=Sheets(j)
          Sheets(j).Move before:=Sheets(i)
        End If
     Next j
  Next i
End Sub

et par ordre alphabetique. Je crée donc une macro qui "appelle"
-ranger les onglets par numero
-copier le nom des onglets (soit la macro ci dessus)
-ranger les onglets par ordre alphabetique

et ça fonctionne
J'adapte les macro à mon dossier final, dossier comprenant 36 onglets, et là, de nouveau ça coince.
Je constate, que les onglets rangés par numero le sont dans l'ordre que l'on peux voir dans le "visual basic" soit 1,10,11...19,2,20...29,3,30...36,4,5,6,7,8et9

je range manuellement les onglets par numero (-->1,2,3,....36)
et ça fonctionne.

je recherche donc

soit une solution pour que la macro "NomOnglets" ci dessus fonctionne seule,
soit une solution pour "ranger" les onglets par numéro chronologique

merci pour votre aide

cordialement
thierry
 

tototiti2008

XLDnaute Barbatruc
Re : nom onglet classeur A egal nom onglet classeur B

Bonjour charrette,

soit une solution pour "ranger" les onglets par numéro chronologique

Peut-être

Code:
Sub ongletCodeName()
'Macro permettant de placer les onglets par ordre des n° de "Feuil"

  Application.ScreenUpdating = False
  Dim i As Integer
  Dim j As Integer
  For i = 2 To Sheets.Count
     For j = i To Sheets.Count
        If CLng(Replace(UCase(Sheets(j).CodeName), "FEUIL", "")) < CLng(Replace(UCase(Sheets(i).CodeName), "FEUIL", "")) Then
          Sheets(i).Move before:=Sheets(j)
          Sheets(j).Move before:=Sheets(i)
        End If
     Next j
  Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__