Erreur code 9, créer un nouveau classeur et feuilles en lien

Bonjour à tous, je suis un néophyte en vba et mon patron me donne jusqu'à vendredi pour créer un dossier pouvant gérer énormément de variables.

Je serai probablement ici souvent cette semaine pour vous demander de l'aide. j'espère pouvoir compter sur vous et vous remercie à l'avance.

Voici mon premier problème:

j'ai le code d'erreur 9 que je règle de la façon suivante:

errhandler:

Select Case Err.Number

Case 9

Sheets.Add after:=Sheets(Sheets.Count)

ActiveSheet.Name = varProvince

Call Module2.Macro3

Range("a3").Select

If activecell.Offset(1, 0) <> "" Then

Selection.End(xlDown).Select

End If

activecell.Offset(1, 0).Select

Resume

Case Else

End Select

ce que je veux faire ;

créer dans la même procédure un classeur par varDepart et dans chaque classeur créer une feuille par varUnStructu.

je m'explique; varDepart = département d'usine

varUnstructu = secteur d'un département.

il faut donc que dans un classeur d'un département (varDepart), tous les secteurs (varUnstructu) reliés à ce département aient une feuille attitrée à ce secteur à l'intérieur du classeur.

ex: le département assemblage a comme secteurs AAA,BBB et CCC.

je veux donc un classeur pour le département assemblage avec 3 feuilles nommées AAA, BBB et CCC

je veux donc que cela ce fasse pour toutes les varDepart et toutes les varUnStructu.

Les varDepart et varUnstructu seront liées dans la base de données ce qui veut dire que une formule permettre de donner une valeur de département(varDepart) à tous les secteurs(varUnstructu)

voici mon sub en entier pour l'instant:

Sub Employe_par_secteur()

On Error GoTo errhandler

Application.ScreenUpdating = False

Dim varMat As Long

Dim varNom As String

Dim varAnnee As Long

Dim varJours As Long

Dim varPrio As Long

Dim varFonction As String

Dim varUnStructu As String

Dim varQuart As String

Dim varDepart As String

Sheets("Feuil1").Select

Range("a3").Select

If ActiveCell.Offset(1, 0) <> "" Then

Selection.End(xlDown).Select

End If

ActiveCell.Offset(1, 0).Select

Sheets("liste employés").Select

Range("a2").Select

Do While ActiveCell <> ""

varMat = Trim(ActiveCell)

varNom = Trim(ActiveCell.Offset(0, 1))

varAnnee = Trim(ActiveCell.Offset(0, 2))

varJours = Trim(ActiveCell.Offset(0, 3))

varPrio = Trim(ActiveCell.Offset(0, 4))

varFonction = Trim(ActiveCell.Offset(0, 5))

varUnStructu = Trim(ActiveCell.Offset(0, 6))

varQuart = Trim(ActiveCell.Offset(0, 7))

varDepart = Trim(ActiveCell.Offset(0, 12))

Workbooks(varDepart).Select

ActiveCell = varMat

ActiveCell.Offset(0, 1) = varNom

ActiveCell.Offset(0, 2) = varAnnee

ActiveCell.Offset(0, 3) = varJours

ActiveCell.Offset(0, 4) = varPrio

ActiveCell.Offset(0, 5) = varFonction

ActiveCell.Offset(0, 6) = varUnStructu

ActiveCell.Offset(0, 7) = varQuart

ActiveCell.Offset(1, 0).Select

Sheets("liste employés BRP").Select

ActiveCell.Offset(1, 0).Select

Loop

Exit Sub

errhandler:

Select Case Err.Number

Case 9

Sheets.Add after:=Sheets(Sheets.Count)

ActiveSheet.Name = varUnStructu

Call Module2.Macro3

Range("a3").Select

If activecell.Offset(1, 0) <> "" Then

Selection.End(xlDown).Select

End If

activecell.Offset(1, 0).Select

Resume

Case Else

End Select

Application.ScreenUpdating = True

End Sub

merci de m'aider!

Bonjour et bienvenue sur le forum

Si tu ne joins pas ton fichier, il sera difficile de t'aider....

Bye !

je ne peux joindre le fichier puisqu'il contient des informations confidentielles

dit moi ce que tu as besoin pour je puisse t'envoyer ce que je peux.

le problème est que c'est une liste d'employés avec leur nom et info personnelles je ne peux donc fournir ce fichier

je veux simplement réussir à créer des classeur en pour chaque variable varDepart.

Àl'aideSVP a écrit :

c'est une liste d'employés avec leur nom et info personnelles

Modifie les noms : tu mets "Nom 1" à la place du premier et tu tires vers le bas, jusqu'au dernier.

Pareil pour les autres données sensibles . Ex "Adresse 1" qui deviendra Adresse 2, Adresse 3 etc

Bye !

voilà c'est fait

Bonjour

Àl'aideSVP a écrit :

j'ai le code d'erreur 9

En effet, tu as un bug à l'instruction surlignée :

    'On Error GoTo errhandler
    Application.ScreenUpdating = False
    Dim varMat As Long
...
...

    Sheets(varUnStructu).Select

[/surligner]

Ce bug est dû au fait que tu sélectionnes une feuille à l'aide d'une variable que tu n'as pas définie : on ne trouve pas dans les instructions précédentes ce que vaut ''varUnSructu''.

Ok ?

Par ailleurs, il serait intéressant de savoir ce qu'est sensé faire la macro....

Bye !

en fait oui, on voit ici dans cette partie de la macro l'emplacement de la variable varUnstructu:

Sheets("liste employés").Select

Range("a2").Select

Do While ActiveCell <> ""

varMat = Trim(ActiveCell)

varNom = Trim(ActiveCell.Offset(0, 1))

varAnnee = Trim(ActiveCell.Offset(0, 2))

varJours = Trim(ActiveCell.Offset(0, 3))

varPrio = Trim(ActiveCell.Offset(0, 4))

varFonction = Trim(ActiveCell.Offset(0, 5))

varUnStructu = Trim(ActiveCell.Offset(0, 6))

varQuart = Trim(ActiveCell.Offset(0, 7))

varDepart = Trim(ActiveCell.Offset(0, 12))

la macro a pour but de créer un workbook au nom de la varDepart avec les feuilles varUnStructu y étant liées

Unstructu sont des secteurs d'usine inclus dans un départment (varDepart). il faut donc que la macro crée un workbook pour chaque varDepart et que chaque secteur(varUnStructu) de ce département ait une page dans le workbook de son départment

Je persiste et signe : tu définis bien ta variable " varUnStructu" mais trop tard car après t'en être servi, d'où le bug.

capture

Bye

bon ça fonctionne mais la macro crée un classeur au nom de la première variable varDepart et crée la première feuille de varUnStructu dans de classeur.

ça bug ensuite car la macro tente de créer à nouveau un classeur au nom de la première variable de varDepart au lieu de passer à la prochaine variable.

aussi il y a plusieurs fois la même variable varDepart et varUnstructu car chaque employé a un département et un secteur lui étant attitré. il faut donc que tous les employés soient mis dans le bon classeur de leur département et dans la bonne feuille de leur secteur dance ce département

Si j'ai bien compris, tu veux créer autant de classeurs qu'il y a de départements différents dans la colonne M et dans chacun de ces classeurs autant de feuilles qu'il y a de "unStruc" qui s'y rapportent dans la colonne G , et sur chaque feuille les données concernées.

Si c'est bien ça, je te propose un essai à tester.

Les fichiers sont créés dans le même dossier que le fichier de départ qui contient la macro. En fin d'exécution, ils sont refermés.

Cela te convient-il ?

Bye !

la macro loop sans fin dans le premier do while

C'est curieux.

Je viens de ré essayer en téléchargeant le fichier que je t'ai envoyé et tout se passe bien...

Il me semble juste manquer une instruction au début pour figer l'écran et une autre à la fin pour indiquer que c'est fini...

Alors, je ne vois pas que faire de plus.

Bye !

A moins que... N'aurais-tu pas un MAC par hasard ? Il est possible que la fonction ''Kill'' ne fonctionne pas sur MAC...

non j'ai un pc

c'est peut-être mon cerveau qui fonctionne en commodore64

Rechercher des sujets similaires à "erreur code creer nouveau classeur feuilles lien"