Se connecter avec
S'enregistrer | Connectez-vous

Créer et nommer un onglet avec une variable

Dernière réponse : dans Programmation

Bonjour,

Je souhaite créer des onglets et les nommer différemment pour pouvoir y coller les infos.
J'explique je récupère un export excel qui contient les différentes UP de production : 6C, 6D,...
je souhaite créer une variable nommée UP qui balayera chaque ligne et a chaque changement d'UP créera un onglet qu'il nommera par le nom de l'UP concerné et dans lequel je viendrai y coller toutes les lignes du dit UP.

Ma macro est la suivante mais elle ne fonctionne pas :

'Sub CREERONGLET()
'
' CREERONGLET Macro
' Macro enregistrée le 17/09/2010 par Interforum
'
'Dim UP As String

'For i = 2 To 300

'
' If Range("A" & i).Value = "" Then
' Range("W" & i).Select
'If ActiveCell.Value = "6C" Then
' FOURNISSEURS = Range("C" & i).Value
' On Error Resume Next
' Sheets("SOURCE").Select
'Sheets("SOURCE").Copy after:=Sheets(2)
'S'heets("SOURCE").Range("AE" & i).Value = "X"
'toutes les op de collage et de mise en forme
'If Range("A" & i).Value = "6D" Then
'Sheets.Add.Name = UP
'Sheets("SOURCE").Select
'Sheets("SOURCE").Copy after:=Sheets(2)
'Active Sheet.Name = "6D"
'On Error Resume Next
'End If
'End If
'End Sub

Quelqu'un peut il m'aider

Autres pages sur : creer nommer onglet variable

Lassé par la pub ? Créez un compte

Bonjour,

Je souhaite créer des onglets et les nommer différemment pour pouvoir y coller les infos.
J'explique je récupère un export excel qui contient les différentes UP de production : 6C, 6D,...
je souhaite créer une variable nommée UP qui balayera chaque ligne et a chaque changement d'UP créera un onglet qu'il nommera par le nom de l'UP concerné et dans lequel je viendrai y coller toutes les lignes du dit UP.

Ma macro est la suivante mais elle ne fonctionne pas :

  1. Sub CreerOnglet()
  2.  
  3. Dim UP As String
  4.  
  5. For i = 2 To 300
  6.  
  7. If Range("A" & i).Value = "" Then
  8. Range("W" & i).Select
  9. If ActiveCell.Value = "6C" Then
  10. UP = Range("C" & i).Value
  11. On Error Resume Next
  12. Sheets("SOURCE" ).Select
  13. Sheets("SOURCE" ).Copy after:=Sheets(2)
  14. Sheets("SOURCE" ).Range("AE" & i).Value = "X"
  15. If Range("A" & i).Value = "6D" Then
  16. Sheets.Add.Name = UP
  17. Sheets("SOURCE" ).Select
  18. Sheets("SOURCE" ).Copy after:=Sheets(2)
  19. Active Sheet.Name = "6D"
  20. On Error Resume Next
  21. End If
  22. End If
  23. End Sub


Quelqu'un peut il m'aider ?

Expert Programmation

Maladresse réparée ;) 

Ouh quelle horreur ce code !
Alors d'abord, tu vas méditer sur la nécessaire indentation du code. Allez hop : http://fr.wikipedia.org/wiki/Indentation#Informatique

Ca y est ? C'est promis, tu n'écriras plus le moindre bout de code sans l'indenter ?
Si c'est oui, c'est bien, on continue.

Dis-donc, ce code ne peut rien faire, il n'est même pas complet !
Où est le Next du For ? Je vois trois If ... Then mais seulement deux End If ! Et que sont ces On Error .. qui se baladent partout.

Bon, je te demanderais bien de me réécrire tout ça, mais je préfère que tu lâches le code pour te concentrer sur ton explication. Voudrais-tu recommencer, en essayant d'être plus clair ?

A te lire.


Tout d'abord merci de prêter attention à ma demande. Je vais t'expliquer quel est mon besoin exactement et peut être pourras tu me guider pour le code.

Dans un premier temps :

Le premier onglet de mon fichier excel est nommé "SOURCE", c'est dans cet onglet que je viens coller un état de ma production actualisé par unité de production (état des colis en temps réel).

La première colonne de mon tableau est l'unité de production UP, au nombre de 5 : 6C, 6D, 6G, 6U, 6V.

Mon besoin est le suivant :

Je souhaite que ma macro balaye ma colonne UP et quelle créée un onglet à chaque nouvel UP qu'elle le nomme avec le nom de l'UP et qu'elle y colle toutes les colonnes concernées.

Dans un deuxième temps :

Le deuxième onglet de mon fichier est nommé "SUIVI DES RAFALES", c'est dans cet onglet que je viens coller un état global des commandes avec les dates de fin de préparation.

Je souhaite croiser les deux fichiers excel UP et SUIVI DES RAFALES afin d'avoir une UP actualisée par onglet et trier par dates et heures de fin de preparation.

SVP Dites moi que je suis un peu plus explicite dans les mots que dans le code ;) 

merci d'avance pour votre aide précieuse

Expert Programmation

Salut,

Tu as deux problèmes. On va tâcher dans régler un seul à la fois.
Commençons par le premier si tu veux bien.


Citation :
La première colonne de mon tableau est l'unité de production UP, au nombre de 5 : 6C, 6D, 6G, 6U, 6V.
Bon.
Citation :
Je souhaite que ma macro balaye ma colonne UP et quelle créée un onglet à chaque nouvel UP qu'elle le nomme avec le nom de l'UP et qu'elle y colle toutes les colonnes concernées.
Or ta colonne UP ne contient que 6C, 6D, 6G, 6U, 6V. C'est ça ? Donc il faut créer chaque onglet si on le trouve dans ta colonne.

Ça me paraît tellement saugrenu que je me dis que je n'ai pas compris. Mais bon...
  1. Option Explicit
  2.  
  3. Enum type_UP
  4. UP_6C
  5. UP_6D
  6. UP_6G
  7. UP_6U
  8. UP_6V
  9. End Enum
  10.  
  11. Dim nom_UP(UP_6C To UP_6V) As String
  12.  
  13. Sub Init()
  14. nom_UP(UP_6C) = "UP_6C"
  15. nom_UP(UP_6D) = "UP_6D"
  16. nom_UP(UP_6G) = "UP_6G"
  17. nom_UP(UP_6U) = "UP_6U"
  18. nom_UP(UP_6V) = "UP_6V"
  19. End Sub
  20.  
  21. Sub CreationFeuillesUP()
  22. Dim cell As Range
  23. Dim i As Integer
  24. Dim sh As Worksheet
  25. Dim UP_vu(UP_6C To UP_6V) As Boolean
  26.  
  27. For i = UP_6C To UP_6V
  28. UP_vu(i) = False
  29. Next
  30.  
  31. For Each cell In Columns(1).Cells
  32. For i = UP_6C To UP_6V
  33. If cell.Value = nom_UP(i) Then UP_vu(i) = True
  34. Next
  35. Next
  36.  
  37. For i = UP_6C To UP_6V
  38. If UP_vu(i) Then
  39. Set sh = Worksheets.Add(, Sheets(Sheets.count))
  40. sh.Name = nom_UP(i)
  41. End If
  42. Next
  43. End Sub
EDIT!
Il faut appeler Init() avant CreationFeuillesUP() bien sûr.

Bonjour,

En plus des réflexions sur l'indentation, j'ajouterai une réflexion sur les termes Excel ...
Traduire ton texte n'est pas évident !

Déjà c'est pas des onglets mais des feuilles (problème linguistique mais qu'il faut saisir pour trouver les commandes VBA correspondant à la création/suppression etc.).

Ensuite, tu dis que tu as une feuille "SOURCE" et une feuille "SUIVI DES RAFALES" ... Après tu parles de 2 fichiers "UP" et "SUIVI DES RAFALES" ...
Je suppose que la dernière est une simple erreur.

Voici ce que je comprends de ton texte :

Tu souhaites une macro (un script VBA) qui a les actions suivantes :
  • Pour chaque ligne de la feuille "SOURCE", on crée une feuille de titre 'VALEUR DE LA COLONNE A'
  • Dans chacune de ces feuilles, tu souhaites qu'une copie des informations des colonnes B à ? de la feuille "SOURCE" soit effectué (pour la ligne correspondante bien sur)
  • Tu souhaites que les informations de chaque onglet ainsi créé soient trié en fonction des données de la feuille "SUIVI DES RAFALES"

    Si c'est pas ça je pense qu'il va falloir être beaucoup plus explicite ;) 

    (un exemple serait le bien venue dans ton cas ... 2 ou 3 petites capturent d'écran avec des valeurs fictives)

    Après, comme zeb, c'est quoi tous ces "on error" ???
    Lien utile : Error Handling in VBA


    @ zeb : tu en fais quoi de UP_vu ???


    1. Sub CreationFeuillesUP()
    2. '.......
    3.  
    4. For i = UP_6C To UP_6V
    5. If UP_vu(i) Then
    6. Set sh = Worksheets.Add(, Worksheets(Worksheets.count))
    7. sh.Name = nom_UP(i)
    8. End If
    9. Next
    10. End Sub


    Non ??? :heink: 

    C'est exactement ça :

    Mais je précise juste une chose, la macro ne créée pas une feuille par ligne, en fait à la fin il y a 5 feuilles nommées "6C", "6D", "6G", "6U", "6V" dans lesquelles vont se coller les lignes qui correspondent à l'UP.

    je vais faire une capture d'écran, par contre comment je l'insère ?




    Expert Programmation

    En relisant tout ça, je me dis qu'on s'est bien embêter pour pas grand chose.
    Titi, t'es qu'un boulet qui ne sait même pas nous dire que tu veux juste copier les lignes de telle feuille qui commencent par 6C dans la feuille 6C.

    Je comprends onglet comme feuille de calcul ou feuille graphique. En général, on ne traite que des feuilles de calcul, que l'on abrège volontiers en feuilles. Soit. Je fais correspondre onglet à Sheet, feuille de calcul à Worksheet et feuille graphique à Chart. Ça ne pose pas de problème tant qu'on utilise les bons objets en programmation.

    1. Dim ws_UP(UP_6C To UP_6V) As Worksheet
    2. Dim i As Integer
    3. Dim b As Boolean
    4. Dim cell_source As Range
    5. Dim cell_UP(UP_6C To UP_6V) As Range
    6.  
    7. ' // Création de toutes les feuilles UP, si elles n'existent pas encore
    8. For i = UP_6C To UP_6V
    9. b = False
    10. For Each ws In Worksheets
    11. If ws.Name = nom_UP(i) Then
    12. b = True
    13. Exit For
    14. End If
    15. Next
    16. If Not b Then
    17. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.count))
    18. ws_UP(i).Name = nom_UP(i)
    19. ' // Création d'un pointeur sur la prochaine ligne à remplir
    20. Set cell_UP(i) = ws_UP(i).Range("A1")
    21. Else
    22. ' // Initialisation du pointeur sur la prochaine ligne à remplir
    23. Set cell_UP(i) = ws_UP(i).Range("A65536").End(xlUp)
    24. If cell_UP(i).text <> "" Then Set cell_UP(i) = cell_UP(i).Offet(1)
    25. End If
    26. Next
    27.  
    28. For Each cell_source In Worksheets("SOURCE").Columns(1).Cells
    29. For i = UP_6C To UP_6V
    30. If cell_source.Value = nom_UP(i) Then
    31. cell_source.EntireRow.Copy Destination:=cell_UP(i)
    32. Set cell_UP(i) = cell_UP(i).Offet(1)
    33. End If
    34. Next
    35. Next

    zeb a dit :
    :jap: 
    Si tu as toi-aussi de jolies choses à proposer, je t'invite à participer à ce topic :
    http://www.presence-pc.com/forum/ppc/Programmation/tuto...

    Je m'y sens un peu seul :( 


    J'ai visité, et les seules petites astuces que j'avais sont déjà listé... :pt1cable: 
    Après il y a "astuce" et "bonne pratique" ... (genre Option Explicit, la gestion des erreurs, etc.) ...

    Mais je ne suis pas un pro du VBA ... Je le manipule un peu (à force d'avoir des *$~%£ de documents bizarres ...) mais c'est pas vraiment ma tasse de thé !
    Je peux te faire un topic similaire en Java, ADA95 et Fortran77 si tu veux (mais j'ai la flemme).

    Bof ... Pour java la FAQ de "developpez.com" est excellente.
    ADA95 et Fortran77 ne sont utilisé que par des puristes qui connaissent déjà tout ...

    Si j'ai un peu de temps je ferais un petit truc ... Mais bon ...
    A la limite, plus intéressant, la mise en place d'une Architecture EDSOA ... Et encore, on trouve tout sur google ...

    Merci mais je ne comprend pas tout et surtout je n'arrive pas à l'exécuter ?

    elle me dit "erreur de compilation "constante requise""

    1. Dim ws_UP(UP_6C To [color=#ff001d]UP_6V)[/color] As Worksheet
    2. Dim i As Integer
    3. Dim b As Boolean
    4. Dim cell_source As Range
    5. Dim cell_UP(UP_6C To UP_6V) As Range
    6.  
    7. ' // Création de toutes les feuilles UP, si elles n'existent pas encore
    8. For i = UP_6C To UP_6V
    9. b = False
    10. For Each ws In Worksheets
    11. If ws.Name = nom_UP(i) Then
    12. b = True
    13. Exit For
    14. End If
    15. Next
    16. If Not b Then
    17. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    18. ws_UP(i).Name = nom_UP(i)
    19. ' // Création d'un pointeur sur la prochaine ligne à remplir
    20. Set cell_UP(i) = ws_UP(i).Range("A1")
    21. Else
    22. ' // Initialisation du pointeur sur la prochaine ligne à remplir
    23. Set cell_UP(i) = ws_UP(i).Range("A65536").End(xlUp)
    24. If cell_UP(i).Text <> "" Then Set cell_UP(i) = cell_UP(i).Offet(1)
    25. End If
    26. Next
    27.  
    28. For Each cell_source In Worksheets("SOURCE").Columns(1).Cells
    29. For i = UP_6C To UP_6V
    30. If cell_source.Value = nom_UP(i) Then
    31. cell_source.EntireRow.Copy Destination:=cell_UP(i)
    32. Set cell_UP(i) = cell_UP(i).Offet(1)
    33. End If
    34. Next
    35. Next


    je dois te sembler bête mais je suis novice même si je suis quand même un boulet :sol: 

    ma feuille source contient les infos suivantes pour illustrer :

    A B C D E...
    1 UP RAFALE LOT ...
    2 6C 21008 25
    3 6C 22541 42
    4 6D 69874 52
    5 6G 45412 64
    ... 6V 25136 84

    Merci d'avance même si je te parait bêbête. :sleep: 


    titi0685 a dit :
    Merci mais je ne comprend pas tout et surtout je n'arrive pas à l'exécuter ?

    elle me dit "erreur de compilation "constante requise""


    Normal, il ne t'a donné que la dernière partie du code ... Il faut reprendre le reste :

    1. Option Explicit
    2.  
    3. Enum type_UP
    4. UP_6C
    5. UP_6D
    6. UP_6G
    7. UP_6U
    8. UP_6V
    9. End Enum
    10.  
    11. ' le = False est inutile puisque c'est la valeur par défaut, mais ça ne gâche rien
    12. Dim nom_UP_init As Boolean = False
    13. Dim nom_UP(UP_6C To UP_6V) As String
    14.  
    15. Sub Init()
    16. nom_UP(UP_6C) = "6C"
    17. nom_UP(UP_6D) = "6D"
    18. nom_UP(UP_6G) = "6G"
    19. nom_UP(UP_6U) = "6U"
    20. nom_UP(UP_6V) = "6V"
    21. nom_UP_init = True
    22. End Sub
    23.  
    24.  
    25. Sub CreationFeuillesUP()
    26. Dim ws_UP(UP_6C To [color=#ff001d]UP_6V)[/color] As Worksheet
    27. Dim i As Integer
    28. Dim b As Boolean
    29. Dim cell_source As Range
    30. Dim cell_UP(UP_6C To UP_6V) As Range
    31.  
    32. ' init nom_UP
    33. If nom_UP_init = False Then Init()
    34.  
    35. ' // Création de toutes les feuilles UP, si elles n'existent pas encore
    36. For i = UP_6C To UP_6V
    37. b = False
    38. For Each ws In Worksheets
    39. If ws.Name = nom_UP(i) Then
    40. b = True
    41. Exit For
    42. End If
    43. Next
    44. If Not b Then
    45. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    46. ws_UP(i).Name = nom_UP(i)
    47. ' // Création d'un pointeur sur la prochaine ligne à remplir
    48. Set cell_UP(i) = ws_UP(i).Range("A1")
    49. Else
    50. ' // Initialisation du pointeur sur la prochaine ligne à remplir
    51. Set cell_UP(i) = ws_UP(i).Range("A65536").End(xlUp)
    52. If cell_UP(i).Text <> "" Then Set cell_UP(i) = cell_UP(i).Offet(1)
    53. End If
    54. Next
    55.  
    56. For Each cell_source In Worksheets("SOURCE").Columns(1).Cells
    57. For i = UP_6C To UP_6V
    58. If cell_source.Value = nom_UP(i) Then
    59. cell_source.EntireRow.Copy Destination:=cell_UP(i)
    60. Set cell_UP(i) = cell_UP(i).Offet(1)
    61. End If
    62. Next
    63. Next
    64. End Sub



    Tu n'as plus qu'à appeler "CreationFeuillesUP()" au bon moment !
    Expert Programmation

    Citation :
    Désolé mais je dois être vraiment idiot
    Dis pas des trucs comme ça. Y a des gens plus crédules que tu n'es idiot !
    :D 

    Citation :
    je n'arrive toujours pas à l'executer

    "J'y arrive pô" Ben qu'est-ce que tu n'arrives pas à faire. A lancer la macro ? Qu'est-ce que tu fais, que fait Excel, quels sont les message d'erreur ?

    J'ai copié le script dans une macro1 et lorsque je l'exécute elle me surligne "Option Explicite" et me marque "instruction incorrecte dans une procédure", puis dans "création de toutes les feuilles" elle me marque "variable non définie" à propos de "ws" dans "For each ws in worksheets".

    Dis moi que je fais n'importe quoi et éclaire moi car j'y pige plus rien.

    Merci

    Alors, je me pose une question à propos de ça :

    titi0685 a dit :
    elle me surligne "Option Explicite" et me marque "instruction incorrecte dans une procédure",


    Le "e" dans "Explicite" c'est toi qui l'a mis en recopiant, ou c'est ce qui était écrit ?
    Car il n'y a pas de "e" à la fin du mot.

    titi0685 a dit :
    "variable non définie" à propos de "ws" dans "For each ws in worksheets".


    En effet, un petit oubli :

    1. Option Explicit
    2.  
    3. Enum type_UP
    4. UP_6C
    5. UP_6D
    6. UP_6G
    7. UP_6U
    8. UP_6V
    9. End Enum
    10.  
    11. ' // le = False est inutile puisque c'est la valeur par défaut, mais ça ne gâche rien
    12. Dim nom_UP_init As Boolean = False
    13. Dim nom_UP(UP_6C To UP_6V) As String
    14.  
    15. Sub Init()
    16. nom_UP(UP_6C) = "6C"
    17. nom_UP(UP_6D) = "6D"
    18. nom_UP(UP_6G) = "6G"
    19. nom_UP(UP_6U) = "6U"
    20. nom_UP(UP_6V) = "6V"
    21. nom_UP_init = True
    22. End Sub
    23.  
    24.  
    25. Sub CreationFeuillesUP()
    26. Dim ws As Worksheet
    27. Dim ws_UP(UP_6C To [color=#ff001d]UP_6V)[/color] As Worksheet
    28. Dim i As Integer
    29. Dim b As Boolean
    30. Dim cell_source As Range
    31. Dim cell_UP(UP_6C To UP_6V) As Range
    32.  
    33. ' // init nom_UP
    34. If nom_UP_init = False Then Init()
    35.  
    36. ' // Création de toutes les feuilles UP, si elles n'existent pas encore
    37. For i = UP_6C To UP_6V
    38. b = False
    39. For Each ws In Worksheets
    40. If ws.Name = nom_UP(i) Then
    41. b = True
    42. Exit For
    43. End If
    44. Next
    45. If Not b Then
    46. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    47. ws_UP(i).Name = nom_UP(i)
    48. ' // Création d'un pointeur sur la prochaine ligne à remplir
    49. Set cell_UP(i) = ws_UP(i).Range("A1")
    50. Else
    51. ' // Initialisation du pointeur sur la prochaine ligne à remplir
    52. Set cell_UP(i) = ws_UP(i).Range("A65536").End(xlUp)
    53. If cell_UP(i).Text <> "" Then Set cell_UP(i) = cell_UP(i).Offet(1)
    54. End If
    55. Next
    56.  
    57. For Each cell_source In Worksheets("SOURCE").Columns(1).Cells
    58. For i = UP_6C To UP_6V
    59. If cell_source.Value = nom_UP(i) Then
    60. cell_source.EntireRow.Copy Destination:=cell_UP(i)
    61. Set cell_UP(i) = cell_UP(i).Offet(1)
    62. End If
    63. Next
    64. Next
    65. End Sub



    Il manquait la ligne 25.
    Expert Programmation

    Dis-donc, Titi. Il faut faire l'effort de comprendre ce que l'on te propose, et ne pas recopier bêtement (et en plus en faisant des fautes :/ ). Ce ne devrait pas être à RedSux de tout te remettre dans l'ordre.

    @RedSux
    1. If nom_UP_init = False Then Init()
    Juste histoire de pinailler :
    1. If Not nom_UP_init Then Init()

    Bonsoir,

    Je comprend ton agacement et m'en excuse. Je suis novice et j'ai un besoin très fort de programmation, seul des gens tel que toi peuvent m'aider.

    J'ai quelques questions, je recopie c'est vrai, mais j'essaie de tout déchiffrer et je ne comprend pas pourquoi je n'arrive pas à l'exécuter encore une fois.

    A quoi sert le "b" et "Boolean" ensuite j'ai le message d'erreur suivant pour : "Dim nom_UP_init As Boolean = false" erreur de compilation attendu fin d'instruction sur le "="

    Sur le "nom_UP_init = True" erreur de compilation variable non définie

    If Not nom_UP_init Then Init() reste en rouge...

    Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    ws_UP(i).Name = nom_UP(i) de même pour "ws"

    Explique moi s'il te plait pour que je parvienne à comprendre et résoudre.

    Merci
    Expert Programmation

    Citation :
    Je comprend ton agacement et m'en excuse.
    Je t'en prie, pas besoin d'excuse. Montre simplement que tu fais des efforts pour comprendre. Ça devrait nous suffire ;) 

    Citation :
    Je suis novice
    Ce qui implique deux choses : tu as un niveau actuellement faible, tu cherches à faire augmenter ce niveau. Nous allons t'aider.

    Citation :
    et j'ai un besoin très fort de programmation
    Ben oui, mais c'est un métier bon sang.

    Citation :
    seul des gens tel que toi peuvent m'aider.
    Ben non. Tu peux obtenir de ton patron une formation. [:spamafote]

    -------------------------

    1. Dim nom_UP_init As Boolean = false
    Bah alors RedSux, tu te crois en C (ou tout autre langage de programmation un tant soit peu bien pensé) ? VB est un langage de m[:zeb:5]e, même pas fichu d'initialiser ses variables :pfff: 

    Comme il y a une erreur sur la définition de la variable, pas la peine de s'énerver, il y aura une erreur à chaque utilisation de la variable. En réglant ce problème, tu règles les autres.

    Pour Boolean, tu mets le curseur sur ce mot et tu appuies sur la touche F1. Ensuite, tu me lis l'aide. Après seulement, tu te permets de poser des questions :o  (c'est chiant d'être novice, hein ! :D )

    Pour b, c'est ma faute. Ce nom n'est pas assez explicite. Ligne 29, 38 et 41, remplace-la par une_feuille_a_ete_trouvee.

    1. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    2. ws_UP(i).Name = nom_UP(i) de même pour "ws"
    Quel est le problème pour ce code ?


    Salut,

    Ce que tu dis est vrai mais pour la formation mon patron est radin, par contre si tu connais un bon bouquin et surtout des applications pour s'excercer ca serait le top.

    1. Dim nom_UP_init As Boolean = false


    il faut supprimer le "= false" mais j'ai un doute.

    1. Set ws_UP(i) = Worksheets.Add(, Sheets(Sheets.Count))
    2. ws_UP(i).Name = nom_UP(i) de même pour "ws"


    Pour ce code le message est le suivant "erreur d'execution 1004" la méthode name de l'objet '_worsheet' a échoué

    et puis

    1. Set cell_UP(i) = cell_UP(i).Offet(1)


    j'ai erreur d'execution '438' propriété ou méthode non gérée par cet objet.


    Alors,

    J'arrive à créer les onglets et les nommer par les noms des UP donc ca fonctionne par contre l'init sert à effacer les feuilles et recommancer mais rien ne se passe je pense que la solution n'est pas d'effacer le "= false"

    Par contre il ne copie que la première ligne et me surligne le code suivant :

    1. cell_source.EntireRow.Copy Destination:=cell_UP(i)
    2. Set cell_UP(i) = cell_UP(i).Offet(1)

    Pas grand chose à dire pour le moment, zeb semble maitriser le sujet ... Je me permettrai donc de simplement mettre quelques smileys :

    zeb a dit :
    Bah alors RedSux, tu te crois en C (ou tout autre langage de programmation un tant soit peu bien pensé) ?




    zeb a dit :
    VB est un langage de m[:zeb:5]e, même pas fichu d'initialiser ses variables :pfff: 


    Lassé par la pub ? Créez un compte