VBA Tableau dynamique en fonction de date début & fin

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titine06

XLDnaute Junior
Bonjour à tous,

Mon cas comme tout cas est particulier 🙂

J'ai un tableau dans lequel je saisie chaque semaine des informations sur mes Fournisseur / Clients / Litiges / Retour / Autre problèmes (5 colonnes)
Mes lignes (E) correspondent à des dates exprimées en semaine et année de la manière suivante: S32 2010 (représente la semaine 32 de l'année 2010)

Je souhaite par le VBA, que la création du tableau s'automatise dynamiquement en fonction de deux dates: semaine début (F3) et semaine fin (G3)

Pour cela, j'aimerai que E7 soit par défaut égal à F3 et que la différence entre G3 et F3 détermine la taille de mon tableau pour que la dernière ligne de E soit égale à F3.

Les difficultés:
-je souhaite garder le format de mes dates qui je sais ne facilitent pas la tache étant donnée que deux information plus un texte sont regroupé au seins d'une même cellule.
-les numéro de semaine correspondent aux numéro de semaine utilisé dans le milieu professionnel

Je fais appel à vous car je n'ai malheureusement pas les connaissances suffisantes pour y arriver par moi même. Cependant, comme j'agrandirai surement mon tableau et l'adapterai au besoin, il faudrait que je puisse la modifier.

Je vous remercie d'avance pour votre aide que ce soit par des pistes ou des conseils.

Titine


PS: je viens d'ajouter la pièce jointe que j'avais oubliée =)
 

Pièces jointes

Dernière édition:
Re : VBA Tableau dynamique en fonction de date début & fin

Bonjour titine06
Ce qui serait agréable, c'est que vous déposiez en pièce jointe le tableau que vous avez déjà pour nous éviter de le reconstruire (et, probablement, de le reconstruire mal). Merci !​
Bon courage, et à bientôt peut-être.

ROGER2327
#4319


Mardi 10 Haha 138 (Saint Panmuphle, huissier, SQ)
24 Vendémiaire An CCXIX
2010-W41-5T22:10:09Z
 
Re : VBA Tableau dynamique en fonction de date début & fin

Bonjour Roger,

Honte à moi, en plus de m'être écroulée de fatigue hier soir, j'étais persuadé d'avoir joint le fichier en question...

Voilà qui est fait 🙂


à bientôt !
 

Pièces jointes

Re : VBA Tableau dynamique en fonction de date début & fin

Bonjour

Ce n'est pas limpide pour moi : faut il une seule ligne par date ?
Si oui des formules pourraient suffire.

Mais j'imagine qu'il se passe plus d'un événement chaque semaine...
 
Re : VBA Tableau dynamique en fonction de date début & fin

Bonsoir à tous
Un essai dans le tableau joint.
La nuit dernière, j'ai préparé une solution pour les dates au format ISO (très professionnel) que j'ai dû adapter à votre format, pas très-normalisé (drôle d'idée d'utiliser deux espaces comme séparateur...). Voyez si vous pouvez en tirer quelque chose.​
ROGER2327
#4322


Mercredi 11 Haha 138 (Sortie de Saint Lucas Cranach, apocalypticien, SQ)
25 Vendémiaire An CCXIX
2010-W41-6T19:34:53Z
 

Pièces jointes

Dernière édition:
Re : VBA Tableau dynamique en fonction de date début & fin

Re...
(...) Des formules ca m'arrangerai grandement! (...)
Malheureusement, j'ai tout fait en Visualbasic...

Rappel (#1) :
(...) Je souhaite par le VBA, que la création du tableau s'automatise dynamiquement en fonction de deux dates: semaine début (F3) et semaine fin (G3) (...)
Pas facile à suivre...​
ROGER2327
#4323


Mercredi 11 Haha 138 (Sortie de Saint Lucas Cranach, apocalypticien, SQ)
25 Vendémiaire An CCXIX
2010-W41-6T19:41:39Z
 
Dernière édition:
Re : VBA Tableau dynamique en fonction de date début & fin

Bonsoir Roger,

Cette solution me convient parfaitement !
J'ai tout de même une question, pourriez-vous m'indiquer à quelle endroit se situe la variante dans la macro à adapter en fonction du nombre de colonne de mon tableau?
(au cas ou j'ai à l'agrandir)

Je vous remercie pour le temps investie pour mon cas !
 
Re : VBA Tableau dynamique en fonction de date début & fin

Non mais la solution VBA me convient très bien, je ne pensais pas les formules capables de résoudre ma problématique. Je dois juste à apprendre à l'adapter en cas ou mon tableau évolue !

De plus, ca me permettra de progresser en VBA !!
 
Re : VBA Tableau dynamique en fonction de date début & fin

Re...
Bonsoir Roger,

Cette solution me convient parfaitement !
J'ai tout de même une question, pourriez-vous m'indiquer à quelle endroit se situe la variante dans la macro à adapter en fonction du nombre de colonne de mon tableau?
(au cas ou j'ai à l'agrandir)

Je vous remercie pour le temps investie pour mon cas !
Au poil !

Pour ce qui est du paramétrage, il est à faire dans le module de la feuille concernée, dans la procédure Worksheet_Change :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, ncol%, df$(1), dat As Range, x$
  ncol = 7 [COLOR="Sienna"]'* Nb. de colonnes du tableau.[/COLOR]
  Set dat = [F3:G3] [COLOR="Sienna"]'* [DEBUT:FIN][/COLOR]
  If Not Intersect(Target, dat.Cells) Is Nothing Then
    With Application: .Calculation = xlCalculationManual: .EnableEvents = False: .ScreenUpdating = False: End With
    With [E6] [COLOR="Sienna"]'* Première cellule du tableau.[/COLOR]
      On Error Resume Next
      df(0) = dISO(normISO(UCase(dat(1).Value)))
      df(1) = dISO(normISO(UCase(dat(2).Value)))
      If Err.Number = 0 And df(1) >= df(0) Then
        On Error GoTo 0
        dat(1).Value = normTITINE(df(0)): dat(2).Value = normTITINE(df(1))
        If Not IsEmpty(.Offset(1, 0)) Then
          With Range(.Offset(1, 0), .End(xlDown))
            .ClearContents
            .Offset(1, 0).Resize(.Rows.Count + (.Rows.Count > 1), ncol).ClearFormats
          End With
        End If
        Do
          i = i + 1
          x = dISO(Split(df(0), "W")(0) & "W" & Format(i + Split(df(0), "W")(1) - 1, "00"))
          .Offset(i, 0).Value = normTITINE(x)
        Loop Until x = df(1)
          .Offset(1, 0).Resize(1, ncol).Copy
          With Range(.Offset(1, 0), .End(xlDown))
            .Resize(.Rows.Count, ncol).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
          End With
          Target.Select
      End If
    End With
    With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlCalculationAutomatic: End With
  End If
End Sub[/B][/COLOR]
Vous y voyez, dans les premières lignes, le nombre de colonnes à traiter, l'emplacement des dates de début et de fin, et la position du coin supérieur gauche du tableau.​
ROGER2327
#4324


Mercredi 11 Haha 138 (Sortie de Saint Lucas Cranach, apocalypticien, SQ)
25 Vendémiaire An CCXIX
2010-W41-6T20:00:19Z
 
Re : VBA Tableau dynamique en fonction de date début & fin

Bonsoir,

Bien que votre solution convienne parfaitement à la problématique de mon poste, je me suis rendu compte en l'adaptant à mon cas et en continuant mon projet que j'avais négliger une hypothèse lors de ma requette...

En espérant que Roger passe par là....

La macro marche parfaitement mise à part que j'ai changé la donne...
J'ai du fusionner des cellules, et la macro ne les prend pas en compte de la création des lignes... comment puis-je faire pour qu'elle le prenne en compte?? y a t il un solution?


merci d'avance !


j'ai mis un petit exemple des fusions de je parle.


Titine
 

Pièces jointes

Re : VBA Tableau dynamique en fonction de date début & fin

Re...
La fusion de cellules est une plaie... Mais si vous l'utilisez, c'est que vous avez certainement de bonnes raisons (qui m'échappent, je l'avoue). En modifiant la procédure Worksheet_Change de la feuille Version_TITINE comme suit :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, ncol%, df$(1), dat As Range, x$
  ncol = 10 [COLOR="Sienna"]'* Nb. de colonnes du tableau.[/COLOR]
  Set dat = [F3:G3] [COLOR="Sienna"]'* [DEBUT:FIN][/COLOR]
  If Not Intersect(Target, dat.Cells) Is Nothing Then
    With Application: .Calculation = xlCalculationManual: .EnableEvents = False: .ScreenUpdating = False: End With
    With [E6] [COLOR="Sienna"]'* Première cellule du tableau.[/COLOR]
      On Error Resume Next
      df(0) = dISO(normISO(UCase(dat(1).Value)))
      df(1) = dISO(normISO(UCase(dat(2).Value)))
      If Err.Number = 0 And df(1) >= df(0) Then
        On Error GoTo 0
        dat(1).Value = normTITINE(df(0)): dat(2).Value = normTITINE(df(1))
        If Not IsEmpty(.Offset(1, 0)) Then
          With Range(.Offset(1, 0), .End(xlDown))
            .ClearContents
            .Offset(1, 0).Resize(.Rows.Count + (.Rows.Count > 1), ncol).ClearFormats
          End With
        End If
        Do
          i = i + 1
          x = dISO(Split(df(0), "W")(0) & "W" & Format(i + Split(df(0), "W")(1) - 1, "00"))
          .Offset(i, 0).Value = normTITINE(x)
        Loop Until x = df(1)
          .Offset(1, 0).Resize(1, ncol).Copy
          With Range(.Offset(1, 0), .End(xlDown))
            [COLOR="Red"]On Error Resume Next
            .Offset(1, 0).Resize(.Rows.Count - 1, ncol).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            On Error GoTo 0[/COLOR]
          End With
          Target.Select
      End If
    End With
    With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlCalculationAutomatic: End With
  End If
End Sub[/B][/COLOR]
vous devriez obtenir le résultat escompté.​
ROGER2327
#4341


Vendredi 13 Haha 138 (Saint et Sainte Fenouillard, Sainte famille, SQ)
27 Vendémiaire An CCXIX
2010-W42-1T23:39:03Z
 
Re : VBA Tableau dynamique en fonction de date début & fin

Bonjour Roger,

Je vais essayer cette solution au boulot tout à l'heure, je vous ferai un retour dans la soirée !

Mes raisons qui "m'obligent" à fusionner des cellules sont d'ordre de "mise en forme" de mon fichier.

Les valeurs au dessus de mon tableau nécessitent de petits espaces de largeurs pour ne pas être démesuré or, les valeurs du tableau en nécessite de plus grande. Voilà pourquoi je les fusionne.... et aussi car je n'ai pas d'autres technique.

Si vous avez déjà rencontré cette difficulté et que vous avez une solution me permettant de ne pas fusionner, je suis à l'écoute. (un lien, conseil ou autre)

merci !

bonne journée

Titine
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour