Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro sur onglets qui bug au dessus de 35 feuilles

11 réponses
Avatar
gilles
bonjour à tous,
APPEL aux spécialistes
la macro ci dessous crée des onglets et les renomme du nom de la cellule M3
qui correspond à un N° de semaine
la zone qui définit ces N° de semaines est un calendrier vertical journalier
sur un onglet séparé
je selectionne la semaine départ et la semaine fin et elle crée les onglets
correspondant aux semaines situées entre ces 2 limites
je ne sais pas pourquoi elle bug au dessus de 35 semaines--

Sub CopieToutesSem()

'Créer les onglets de toutes les semaines
'copie l'onglet "semaine en cours" en autant de semaines que dure le chantier
'et affecte les Noms d'affaire et N° de semaine

Sheets("dates").Select
Range("H6:H1750").Select 'Activate
Dim Name As String
Dim Mycell As Range, Mysheet As Worksheet, MyName$
For Each Mycell In Selection 'liste de noms
MyName = Mycell.Value
If MyName <> "" Then
On Error Resume Next
Set Mysheet = Sheets(MyName)
On Error GoTo 0
If Mysheet Is Nothing Then Sheets("Semaine en cours").Copy
After:=Sheets("Semaine en cours")

'depuis semaine en cours (2) je recopie les heures sur semaine en cours
Sheets("Semaine en cours (2)").Select
Range("M10:M76").Select
Selection.Copy
Sheets("Semaine en cours").Select 'je recopie sur semaine en cours
Range("K10").Select
ActiveSheet.Paste Link:=True 'copie avec liaison
Application.CutCopyMode = False
'je renomme l'onglet
Sheets("Semaine en cours (2)").Select
Sheets("Semaine en cours (2)").Name = MyName
Application.ScreenUpdating = False
[K3].Value = "Semaine"
[M3] = ActiveSheet.Name
Range("M3").Select
Selection.Copy
Range("BE2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("O3").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-1]C[42],basedates,2,FALSE)"
Range("O2").Select

ActiveSheet.PROTECT DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End If
Next Mycell


'renomme l'onglet Semaine en cours et le met à la fin pour que
'l'utilisateur ne l'utilise pas

Sheets("Semaine en cours").Select
'
Range("K10:K76").Select
Range("K76").Activate
Selection.ClearContents
Sheets("Paramètres").Select
Sheets("Semaine en cours").Name = "vierge"
End Sub

Si un dieu voit dans la syntaxe une raison à ce pb je lui en serait
grandement reconnaissant!!!

à+
Gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

1 réponse

1 2
Avatar
gilles
Merci MICHEL,
j'ai essayé ta suggestion mais je ne dois pas le placer ou il faut et je
génére de messages d'erreur divers
j'abandonne pour ce soir
merci encore
gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...



Dans ta procédure, tu ajoutes 2 lignes de code comme suit

zz = zz +1
if zz = 35 then Stop 'Ceci c'est pour arrêter la macro

Et tu poursuis la procédure à l'aide de la touche de F8
Tu vérifies le contenu de chaque variable ...est-ce qu'il est ok ?
Quel devrait être le nom de l'onglet de la nouvelle feuille ?
Quelle est la ligne de code sur laquelle la procédure se met
en erreur pour afficher le message ?

Sans rien voir, j'avoue que c'est un peu difficile !




"gilles" a écrit dans le message de news:

Merci de ton aide,
Le contenu est le résultat d'une formule à conditions, qui donne:
8 07
6 cellules vides
9 07
6 cellules vides
10 07
....
les cellules en question sont séparées de 6 cellules vides puisque c'est un
calendrier vertical
si je change le N° de semaine DEPART et semaine FIN, c'est pareil : les 35
premiers onglets se nomment bien du nom des cellules, puis ça bug au dela de
35 feuilles (erreur 1004)
Si tu as un éclair : EUREKA!!! ou
BON DIEU MAIS C'est BIEN SUR!!!.....(quoique tu es peut être trop jeune pour
avoir connu "les 5 dernières minutes" , l'ancêtre des séries policières TV
!!!)
Merci Michel

en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...



Est-ce que le contenu d'une des cellules de ta plage
qui deviendra le nom d'un futur onglet de ton classeur
contient un de ces symboles interdits dans la nomination
d'une feuille :

A ) : / * ? [ ]
B ) Le nombre de caractères d'une feuille ne peut avoir plus de 31 caractères
les espaces compris.
C ) Aucun nom d'onglet d'une feuille ne peut être présent plus d'une fois
dans un même classeur.
D ) Est-ce possible que tu aies une cellule vide ? L'onglet d'une feuille
doit avoir au moins un "nom" d'une longueur d'un caractère admissible.

Au delà de ça, je ne sais pas !



"gilles" a écrit dans le message de news:

Re bonjour,
En fait je ne peux pas incorporer le code proposé, car il génère une
quantité de feuilles à partir d'un nombre donné:
For i = 1 To [G1].Value
J'ai besoin qu'il génére les feuilles à partir d'une selection qui me sert
pour définir le nom de chaque feuille
For Each Mycell In Selection 'liste de noms
MyName = Mycell.Value--
donc je ne vois pas!...
Gilles

en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...




| Comme toi, je croyais que c'était 256 ! mais j'avais un souvenir d'avoir

Non... Non, j'ai vraiment roulé la procédure lors d'un test et elle s'est arrêtée
après la copie 256. Ce n'est pas une "CROYANCE" c'est un "FAIT".
Il devait y avoir quelque chose d'autre dans mon environnement qui
interférait ! D'où la mention dans mon message initial "test non exhaustif"...

;-)















1 2