Remplissage Base de donnée via formulaire

Bonjour,

Je sais, ce sujet a déja été abordé, mais je n'ai pu trouver de réponse suffisante...

Donc voila, c’est la première fois que je tente la programmation avec macros et j’ai pu trouver le code suivant qui est censé permettre de remplir une base de donnée horizontale automatiquement avec un petit formulaire vertical. Ca me semblait clair mais j’ai modifié certains paramètres pour adapter à mon tableau et du coup, plus rien ne marche… 

Sub FioulForm()
'Atteindre le formulaire et mémoriser les données
Sheets("2008").Select
Range("B1:B10").Select
Selection.Copy
'Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("2008").Select
ValeurF2 = Range("A2").Value
If ValeurF2 = "" Then
Range("F2").Select
Else
Range("F1").Select
Selection.End(x1Down).Select
Lignebase = ActiveCell.Row
Range("A" & Lignebase + 1).Select
End If
'Memoriser la ligne à laquelle copier les données
Lignebase = ActiveCell.Row
'Coller avec transposition
Range("F" & Lignebase).Select
Selection.PasteSpecial Paste:=x1PasteAllExceptBorders, Operation:=x1None, SkipBlanks:=False, Transpose:=True
'Rendre le formulaire vierge : A améliorer avec insertion des valeurs à la base...?
Sheets("2008").Select
Range("B1:B10").Select
Selection.ClearContents
Range("B1").Select
End Sub

voila le fichier

Au début, ca plantait au niveau du PasteSpecial, mais j’ai changé la mise en page de la feuille et ca plante avant, au niveau de la ligne Selection.End(x1Down).Select.

J’espère que j’ai pas trop fait le boulet dans le code, mais j’ai vraiment envie de comprendre pourquoi ca ne va pas, donc si vous pouviez m’aider, ce serait vraiment (encore une fois) extrêmement généreux!

D’avance, un très très grand merci pour une éventuelle réponse, et merci à tous ceux qui fournissent ce forum, une mine d’or!

Et au fait, en plus de l’inscription des lignes, j’aurais aimé ajouter à la macro les fonction de

  • remplissage de certaines infos automatiquement dans le formulaire en fonction de la dernière date qui a été rentrée. Donc au lieu de tout effacer, que les champs année/mois/jour/poste soient déjà préchargés avec les dernières valeurs du tableau, ce qui doit permettre d’accélérer la saisie.
  • Mise a jour du tableau croisé dynamique associé (sur autre feuille)

Bonsoir,

dans ton code, tu mets un 1 à la place d'un l dans xlDown (x1Down) ainsi que x1PasteSpecial et x1None

Tu peux également modifier comme ceci :

Sub FioulForm()
Dim Derlig As Long
Derlig = IIf([F2] = "", 2, [F1].End(xlDown).Row + 1)
With [B1:B10]
    .Copy
    Cells(Derlig, 6).PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    .ClearContents
End With
With Cells(Derlig, 6).Resize(1, 10)
    .Interior.ColorIndex = xlNone
    .Font.ColorIndex = 0
    .Font.Bold = False
    .HorizontalAlignment = xlCenter
End With
[B1].Select
End Sub

Bonjour,

Borrel a écrit :

- remplissage de certaines infos automatiquement dans le formulaire en fonction de la dernière date qui a été rentrée. Donc au lieu de tout effacer, que les champs année/mois/jour/poste soient déjà préchargés avec les dernières valeurs du tableau, ce qui doit permettre d’accélérer la saisie.

Macro de Felix modifiée pour faire cela

Borrel a écrit :

- Mise a jour du tableau croisé dynamique associé (sur autre feuille)

J'ai modifié le nom de ta plage Fioul_machines et mis en place la macro pour mise à jour automatique.

Fichier

Amicalement*

Nad

Bonsoir, Nad

Forcément, si je ne lis pas tout.......

Merci pour ta rectification.....

Bonjour,

Effectivement, j'avais fait le boulet dans le code, comme prévu

Merci pour vos réponses toujours aussi précises et rapides, vous etes merveilleux, fabuleux, incroyables,...!!

C'est vrai qu'il suffisait de ne pas effacer les cellules pour conserver la dernière saisie, sorry pour cette bete question ou pourquoi faire compliqué quand on peut faire simple.

Juste une petite question : je ne comprend pas à quoi sert cette partie du code :

With Cells(Derlig, 6).Resize(1, 10)
    .Interior.ColorIndex = xlNone
    .Font.ColorIndex = 0
    .Font.Bold = False
    .HorizontalAlignment = xlCenter
End With

Si on utilise simplement Paste:=xlValues ca suffit pour conserver le format du tableau non?

Merci bcp!

Et alors, si je peux abuser de votre affabilité, j'aurais encore trois petites questions :

1) J'ai utilisé la formule matricielle de Dubois pour déterminer une liste de validation basée sur les données insérées (donc sans blancs ni doublons), merci 1000x à lui car elle marche nickel, mais je ne comprend pas pourquoi j'ai l'entete du tableau qui vient à la fin de mes listes? Qu'ai-je mal transposé? Et alors, pour être tout à fait chiant, j'aurais voulu que la liste obtenue soit organisée alphabétiquement, mais avec la formule matricielle, cela semble "impossible"...?

2) J'aimerais qu'à chaque insertion de données, les tableau soit ordonné en fonction décroissante Année > Mois > Jour > Pause. Mais je ne connaispas le code à mettre dans la macro pour faire ca automatiquement. Ca risque pas d'être trop lourd d'ailleurs?

3) Edit : ca marche finalement, j'ai rien dit...

Voila le fichier

D'avance merci pour tout aide...

Encore une petite question : Dans mon TCD, il semble avoir gardé en memoire des valeurs tests que j'avais inséré avant, mais qui n'existent plus nulle part... Je comprend pas pourquoi, et comment vider ce "cache' ?

Bonjour,

Effectivement c'est un pb du TCD.

Quelle est ta version d'excel ?

Dan

Merci pour ta réponse.

2003 sur XP, mais il faut que mes feuilles de calcul puissent être utilisées avec 2000 à mon avis... C'est grave docteur?

Re,

OK c'est plus compliqué si tu dois utiliser le fichier sous excel 2003 et sous excel 2000.

Peux-tu me donner ton fichier ?

Dan

Il est dans mon avant avant dernier message.

C'est toujours le meme

Merci bcp.

Cordialement

re,

Ok. Désolé je n'avais pas fait attention.

Laisse moi un peu de temps.

Au fait, tu n'auras qu'un seul TCD dans ce fichier ?

A te relire

Dan

Non, je vais probablement en intégrer un second, mais partiellement basé sur les memes valeurs. Pourquoi?

En tout cas, je ne dirais jamais assez mais merci 1000x pour ton aide!

PS : Je sais qu'il ya une abomination (1>65000) au niveau de mon tableau-liste, j'ai corrigé ca avec le nom de la liste, c'est plus propre mnt

Petit up de ces questions car je n'ai toujours pas trouvé de réponse...

Merci

Borrel a écrit :

1) J'ai utilisé la formule matricielle de Dubois pour déterminer une liste de validation basée sur les données insérées (donc sans blancs ni doublons), merci 1000x à lui car elle marche nickel, mais je ne comprend pas pourquoi j'ai l'entete du tableau qui vient à la fin de mes listes? Qu'ai-je mal transposé? Et alors, pour être tout à fait chiant, j'aurais voulu que la liste obtenue soit organisée alphabétiquement, mais avec la formule matricielle, cela semble "impossible"...?

2) J'aimerais qu'à chaque insertion de données, les tableau soit ordonné en fonction décroissante Année > Mois > Jour > Pause. Mais je ne connaispas le code à mettre dans la macro pour faire ca automatiquement. Ca risque pas d'être trop lourd d'ailleurs?

Voila le fichier

Hello.

Encore merci beaucoup à Dan pour tes efforts pour "compatibiliser" le fichier en excel 2000 / 2003, mais comme je te disais par MP, faire un fichier uniquement 2003 devrait aussi favoriser le passage au 2003 pour toutes les machines (ils ont des problèmes ailleurs aussi à cause de ca, donc bonne excuse!)

Sinon, j'ai vraiment du mal avec ce VBA. Il faudrait que j'en étudie les bases mais je suis malheureusement à cours de temps.

Si une bonne ame passe par ici, voici en gros mes questions (elles sont reprises en détail dans

(que je n'ai pas pu uploader sur le site car > 100 ko) :

- Je n'arrive pas à transposer la macro de boisgontier sur les listes en cascade à mon cas... J'ai pourtant presque tout essayer :-/ (enfin, ce que je pensais bon plutot...)

- La macro d'insertion que vous m'aviez fournie fonctionnait très bien, mais je me suis rendu compte que la saisie des données pouvait être facilitée en rentrant les données 3 lignes par 3 lignes. Ce qui nécessite plusieurs adaptations, mais que je suis incapable de faire tout seul.

Bon dieu, je savais que j'aurais du étudier l'informatique...

Merci à vous

Bonjour,

Je reviens vers vous, car je n'ai pas pu trouver/comprendre comment faire mieux magré mes recherches... Et n'ayant pas eu de reponses, je me permet de "upper".

Les questions formulées dans le fichier sont elle trop peu claires?

Cela est-il impossible à faire?

Je ne veux pas de fichier cle en main, j'adore apprendre, mais ici l'objectif est trop complexe et j'ai besoin qu'on me débloque... Please, une ame éclairée pourrait elle me donner quelques indications sur la marche à suivre?

Bonsoir à tous,

Borrel, ne te décourage pas !

Je reprends ton fichier du début.

  • Tu veux transposer une saisie dans une sorte de base.
  • et que les listes se mettent à jour ?

Si tu veux utiliser la formule matricielle (liste sans doublon) , il faut laisser une ligne vide

en haut du tableau.

https://www.excel-pratique.com/~files/doc/ik60uSuivi.xls

amicalement

Claude.

Salut le forum

Borrel a écrit :

Encore merci beaucoup à Dan pour tes efforts pour "compatibiliser" le fichier en excel 2000 / 2003, mais comme je te disais par MP.

Cela ne t'aideras surement pas a faire avancer les réponses si tu passes en MP.

Myt♪

Rechercher des sujets similaires à "remplissage base donnee via formulaire"