remplir un tableau sur une autre feuille suivant la date choisi

Gargol

XLDnaute Nouveau
Bonjour,

j'ai une idée en tete mais je ne sais pas du tous comment mettre cela en oeuvre, ni meme si cela est possible.
J'imagine que oui quand meme, c'est pas si complexe que ca ;p

1- remplir tableau BDD
j'ai donc une feuille dans laquelle je rempli une cellule avec la date, puis d'autre cellule avec des valeurs numerique principalement.
Ce que j'aimerai faire c'est que lorsque je rempli les différentes cellule, les valeurs s'inscrivent dans un tableau sur une autre feuille dans la ligne de la date choisi.
Dans se tableau il y a biensur chaque jour de l'année + 15j, jamais plus. le fichier sera neuf chaque année.

En gros j'apparente ca a remplir une base de données.

2- consultation/modification tableau BDD
en etant sur ma feuille formulaire, si je renseigne une date pour laquelle des valeurs ont deja été tapé, il faudrait les faires revenir dans mon "formulaire"

3- cerise sur le gateau
conserver la mise en forme et les eventuelle commentaire d'une feuille a l'autre.

Bref je ne sais pas trop par ou commencer ni comment m'y prendre, donc si quelqu'un a des idées je suis prenneur.

Un petit fichier exemple ci joint ;p ca sera certainement utile.

Merci
 

Pièces jointes

  • exemple.xlsx
    52.1 KB · Affichages: 54
  • exemple.xlsx
    52.1 KB · Affichages: 61
  • exemple.xlsx
    52.1 KB · Affichages: 58

Dranreb

XLDnaute Barbatruc
Re : remplir un tableau sur une autre feuille suivant la date choisi

Bonjour.
Deux solutions.
Celle que j'emploierais c'est :
VB:
Feuil2.Range("Bbd_tab_" & num_variable).Rows(Ligne).Copy Destination:=Me.Range("bdd_form_" & num_variable)
Celle qui serait en théorie et techniquement au plus près de la même chose qu'avec les crochets serait en fait :
VB:
Application.Evaluate("Bbd_tab_" & num_variable).Rows(Ligne).Copy Destination:=Application.Evaluate("bdd_form_" & num_variable)
Mais j'emploierai aussi une variable J ou N déclarée As Long plutôt qu'un interminable num_variable.
 
Dernière édition:

Gargol

XLDnaute Nouveau
Re : remplir un tableau sur une autre feuille suivant la date choisi

Voila je pense que ca commence a devenir pas mal grace a toi ;p

VB:
Option Explicit
Dim Ligne As Long
Dim num_variable As Long

'decalage 1ere ligne tableau
Const decalage_ligne As Integer = 3

'nombre de plage concerné
Const plage_max As Integer = 14

'[bdd_form_1] à [bdd_form_14] => plage de cellule de la feuille formulaire
'[bdd_tab_1] à [bdd_tab_14]   => plage de colonne dans les tableau à remplir
'...

Private Sub Worksheet_Activate()
Recupererligne
End Sub

Private Sub Worksheet_Deactivate()
ReporterLigne
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
    If Ligne = 0 Then Ligne = Me.[C2].Value - [debut_exercice].Value + decalage_ligne
    If Target.Address = "$C$2" Then ReporterLigne: Recupererligne

End Sub

Private Sub Recupererligne()
    Ligne = Me.[C2].Value - [debut_exercice].Value + decalage_ligne
    'Application.EnableEvents = False
    
    For num_variable = 1 To plage_max
        Application.Evaluate("bdd_tab_" & num_variable).Rows(Ligne).Copy Destination:=Application.Evaluate("bdd_form_" & num_variable)
    Next
      
    'Application.EnableEvents = True
End Sub

Private Sub ReporterLigne()

   If Ligne = 0 Then Exit Sub
   
    For num_variable = 1 To plage_max
        Application.Evaluate("bdd_form_" & num_variable).Copy Destination:=Application.Evaluate("bdd_tab_" & num_variable).Rows(Ligne)
    Next

End Sub

Je n'ai pas ajouté d'event avant sauvegarde car apres reflexion si on ne change pas d'onglet mais qu'on sauvegarde le fichier, de toute facon les valeurs des cellules seront conservé pour la prochaine ouverture du fichier et donc reporte en cas de nouvelle date ou de changement d'onglet.

Y'a t'il encore de grosse erreurs (de debutant que je suis) ou cela parait correcte?

En tous les cas, un grand MERCI pour l'aide et l'enseignement apporté.
 

Discussions similaires

Réponses
0
Affichages
233

Statistiques des forums

Discussions
312 210
Messages
2 086 279
Membres
103 170
dernier inscrit
HASSEN@45