Copier Cellule e en fonction des semaines

Bonjour à tous je suis débutant en VBA et depuis plusieurs jours j'essaye de résoudre un problème.

Dans mon fichier j'ai un tableau avec des lignes qui correspondent à ma liste d'utilisateurs et des entêtes qui correspondent aux numéros de la semaine.

Je souhaiterai copier les cellules des données qui correspondent à chaque semaine, en créant un nouveau classeur pour créer un planning à la semaine.

La difficulté c'est que j'ai une macro qui modifie le tableau en fonction des années et les cellules ne sont plus à la même position .

Bonjour, voilà un petit coup de pouce.

La macro ne prends pas en compte le nombre d'utilisateur , peut-être en définir un par défaut ?

Dans les nouveaux fichiers, il faudra refaire les quadrillage et les formats des cellules. Vous changez vos semaines avec votre liste déroulante comme d'habitude.

Merci beaucoup ça va grandement m'aider.

Je vais essayer de comprendre le code pour l'adapter .

Je pense que j'aurais surement besoin d'encore un peu d'aide sur l'adaptation je ne place pas tout de suite le sujet en résolu .

D'accord ! faites...

En faite mon responsable ma donné un planning réalisé sans macro ou il inscrit à la main le planning de chaque personne dans un tableau annuel.

Une fois le tableau annuel réalisé il créer un classeur par semaine pour reporter les données du tableau annuel et ainsi transmettre le planning à la semaine.

Il m'as demandé de réalisé un planning ou il n'aurait pas à remplir à la main les planning de semaine, et il faut aussi que les dates puissent s'adapter automatiquement en fonction des années.

Les difficultés que j'ai rencontré jusqu’à maintenant sont multiples car je n'ai que très peu de connaissances en VBA. J'ai passé une semaine à suivre des cours en ligne pour en apprendre les bases, mais plus j'avance et plus il me semble qu'il faut que je creuse plus loin.

Je pense que c'est une bonne épreuve pour apprendre le VBA mais de l'aide est toujours la bienvenue

Bonjour

Bonjour Force rouge

Mon approche est différente et bien plus emm.....ante, c'est pour le fun si on veut

Mais bon je voulais le faire, surtout pour les semaines à cheval sur 2 mois

A tester

Sauvegarde faite dans le répertoire du fichier principal

Merci de ton aide.

J'ai une question voir plusieurs mais une en particulier.

Que fais la ligne suivante

ActiveSheet.Shapes(Application.Caller)

j'ai un message d'erreur dessus qui me dit que l'objet est introuvable sur cette ligne.

Si J'ai compris en faite ça utilise la liste déroulante pour active l'action de création d'un nouveau classeur.

Par contre ça ne renvoi rien je cherche pourquoi.

Bonjour

C'est ta comboBox (semaine) qui appelle la macro

Je n'ai pas changer autre chose

Et cette ligne affecte à la variable l'objet qui a appelé la macro

Au fait tu peux enlever la macro Qui (ne sert à rien dans ce fichier)

Merci j'ai garder la macro de coté car je ne connaissais pas du tout l'utilisation des Shapes.

Dans ton fichier quand je choisi une semaine il doit créer un nouveau classeur et l'enregistrer dans le même dossier que le classeur d'origine ?

Car il ne ce passe rien.

C'est peu être à cause du faite que je soit sur Excel 2013. La je suis chez moi et je n'ai pas la version 2010 de excel alors qu'au boulot ont n'utilise la version 2010.

Salutation Banzaï (oui c'est du lourd par comparaison à ma petite .find)

doggerip, je suis novice aussi et j'apprends au fil du temps. Là vous vous compliquez la vie parce que votre année est scindée en trois,quatre voire cinq tableau. Il y a peut-être une autre disposition plus simple (à étudier) qui permettrai d'avoir moins de ligne de code vba pour extraire seulement sept jours d'un calendrier annuel.

Enfin bon...Si j'étais vous, je mettrais les dates en ligne et les utilisateurs en colonne..

Bonjour

As tu enregistré le fichier avant de choisir une semaine ?

Je l'ai fait avec 2010 et je ne crois pas qu'il y ait des différences avec 2013 (du moins dans l'exécution du code)

Si quelqu'un peut le tester

Il suffit d'enregistrer le fichier

De choisir une semaine

De vérifier si un fichier est créé

Merci d'avance

@Force rouge

Oui c'est vrai la disposition des tableau n'est pas des plus géniale

Le nombre de ligne de chaque tableau n'est pas identique

J'ai essayer de le re-telecharger et de l'enregistré mais rien à faire, en attendant j''essaye de décortiquer ton code pour en comprendre le fonctionnement et aussi de revoir un peu mon tableau pour qu'il soit mieux organiser .

Je confirme que cela enregistre le même répertoire

Banzaï depuis que j'ai découvert le lean manufacturing je suis devenu le plus gros radin de toute la terre...

Je cherche même à économiser des lignes sur excel

Je suis désolé c'est de ma faute, j'avais un souci d'actualisation sur mon bureau. Il fonctionne parfaitement, pour le coup je passe le sujet en résolu.

Merci beaucoup pour votre aide à tous les deux, a bientôt et j'espère qu'un jour ça sera moi qui pourra aider les autres membres du forum .

Je confirme que cela enregistre dans le même répertoire

Banzaï depuis que j'ai découvert le lean manufacturing je suis devenu le plus gros radin de toute la terre...

Je cherche même à économiser des lignes sur excel

doggerip...C'est avant de commencer un fichier excel qu'il faut se poser des questions ! Et se poser les bonnes d'ailleurs...

doggerip...C'est avant de commencer un fichier excel qu'il faut se poser des questions ! Et se poser les bonnes d'ailleurs...

Oui je pense que pour mes prochains projets je passerai par le papier crayon avant de foncé dans le code.

Vilfredo Paréto doit se retourner dans sa tombe !

Désolé de ré-ouvrir le sujet je cherche à comprendre le code de Banzai64 je voudrais modifier la partie qui ouvre un nouveau classeur, pour l'ouvrir dans un nouvelle onglet, mais je n'arrive pas à trouver la partie du code à modifier.

Je reposte le code modifier

'déclaration des variables
Sub AddWorkbook()
Dim Cel As Range, Plage As Range
Dim Depart As String, NomFeuille As String, Recherche As String
Dim LesLignes
Dim I As Integer, Colonne As Integer
Dim Sh As Shape
'Affichage en temps réel de la modification
  Application.ScreenUpdating = False
'Attribution de la variable SH à la liste déroulante
  Set Sh = ActiveSheet.Shapes(Application.Caller)
'Attribution de recherche aux entêtes des semaines
  Recherche = "S" & Sh.ControlFormat.Value
'Attribution du nom du nouveau classeur
  NomFeuille = Range(Sh.ControlFormat.ListFillRange).Cells(Sh.ControlFormat.Value, 1)

  ' Dans ce tableau : Les numéro de ligne début tableau
  LesLignes = Array(11, 35, 59, 84, 108, 132)
'Création d'une variable raccourci en .
  With Sheets.Add
'Attribution du nom de la feuille de calcul
    ActiveSheet.Name = NomFeuille
'Boucle sur les ligne pour la colonne 1 Ubound prend la taille maximal des champs en colonne 1
    For I = 0 To UBound(LesLignes)
      If I = 0 Then
        Colonne = 1
      Else
' Si ce n'est pas la colonne 1 
        Colonne = .Cells(2, Columns.Count).End(xlToLeft).Column
        If .Cells(2, Colonne) = "" Then
          .Columns(Colonne).Delete
        Else
          Colonne = Colonne + 1
        End If
      End If
      Sheets("Congés et HotLine 2015").Cells(LesLignes(I), "C").CurrentRegion.Copy

      .Cells(1, Colonne).PasteSpecial Paste:=xlPasteValues
      .Cells(1, Colonne).PasteSpecial Paste:=xlPasteFormats
      .Cells(1, Colonne).PasteSpecial Paste:=xlPasteColumnWidths
      If I > 0 Then
        If .Cells(Rows.Count, Colonne).End(xlUp).Row > .Range("A" & Rows.Count).End(xlUp).Row Then
          .Columns(Colonne).Cut Destination:=.Columns(1)
        End If
        .Columns(Colonne).Delete
      End If
    Next I

  Set Cel = .Cells.Find(what:=Recherche, LookIn:=xlValues, lookat:=xlWhole)    ', searchorder:=xlByRows)
  If Not Cel Is Nothing Then
    Depart = Cel.Address
    Do
      If Plage Is Nothing Then
        Set Plage = Cel.Resize(30, 1)
      Else
        Set Plage = Union(Plage, Cel.Resize(30, 1))
      End If
      Set Cel = Cells.FindNext(Cel)
    Loop While Depart <> Cel.Address
  End If
  Plage.Copy .Range("B2")
  .Rows(1).Delete
  .Range(.Cells(1, Plage.Columns.Count + 2), .Cells(1, Columns.Count)).EntireColumn.Delete

  .Copy

    Application.DisplayAlerts = False
    .Delete
    Application.DisplayAlerts = False
  End With

End Sub

Allez savoir ! Vu le code je dirai...Plouf plouf une vache qui...fait pipi dans tonneau c'est rigolo...ligne 31 !

J'ai bien trouvé Sheet.Add mais ça n'ajoute qu'une feuille dans un classeur .

Rechercher des sujets similaires à "copier fonction semaines"