Copier les données de l'userform vers feuille

Bonjour,

Débutant en VBA, j'ai créé un userform qui fonctionne très bien (grâce à votre aide !)

Cependant, je voudrais pouvoir transférer les données saisies par date (car il y a un tableau saisi par jour) sur une feuille de mon classeur pour que l'on puisse si besoin faire les recherches en fonction des dates.

Un grand merci d'avance pour votre aide.

Bonjour valtaor,

Le point de départ est de réaliser ton tableau récapitulatif vide (juste les titres et les infos que tu veux y stocker)

A partir de là nous pourrons te proposer des solutions

En attendant cette donnée, voilà quelques pistes de code pour faire formulaire->feuille

Dim aujourdui as Date
'aujourdui va contenir la date d'aujourdui (jour mois année)
aujourdui  = dateserial(Year(now),Month(now),Day(now))

Feuil5.Range("A5").Value = aujourdui 'on sauvegarde la date dans la cellule A5 de la Feuil5.
Feuil5.Range("B5").Value = TextBox25.Value 'sauvegarde des données de la textbox25 dans la cellule B5 de la Feuil5 

Attention, Feuil5 est le nom de l'objet (ie le nom d'une sorte de variable, qui sera très probablement différent du nom donné à la feuille)

Evidemment il faut pas utiliser A5 B5 etc... mais Feuil5.Range("A" & compteur ) pour bien placer le contenu

très très très fastidieux...

En effet je suis d'accord, tu as 150 textbox je comprend que ça soit fastidieux ^^

Mais dis nous déjà ce que tu voudrais comme tableau récapitulatif!! Je veux bien te proposer un truc balaise si tu fais une demande structurée

je voudrais sauvegarder les données du jour au cas au nous aurions besoin de revenir dessus (il s'agit d'expédier des colis et de garder des traces au cas ou...

Je comprend tout à fait.

Par contre j'ai quelques problèmes de compréhension (je suis en train de faire une programmation propre de ton formulaire, parce que là si on te dit que la colonne B est à supprimer tu sors une corde je pense ^^)

La structure d'un colis c'est:

Numéro - Nom

Enseigne - Contact

Rue1 - Rue2 - Téléphone

Problème:

C'est pas le téléphone qui est écrit mais le code postal

Absence, où sont mises les informations suivantes? Sont-elles à afficher?

  • Civilité
  • Code postal
  • Nom de la ville
  • N°Colis (actuellement c'est le nom de la ville qui est affiché)

Voilà ce que ça pourrait donner:

proposition

Bonjour,

Merci du temps que tu me consacres.

En fait, l'étiquette "numéro de colis" est juste une case qui reste vide car le transporteur doit coller une étiquette. je sais j'aurais mieux fais de mettre un label plutôt qu'une textbox mais ça fait des jjjjjjjjjjjjours que je suis dessus et je n'avais pas le courage de tout rechanger. Dans le formulaire, j'ai créer une 4ème page intitulée nouveau client car nous sommes amenés à expédier des colis à des nouveaux clients qui ne sont pas encore créer dans la liste clients. La colonne B de la feuille nouveau client correspond à la civilité dont je n'ai pas besoin d'ailleurs mais si je l'enlève, mes champs ne se remplissent pas correctement ??? S'il y a plus textboxes c'est qu'au début j'avais pensé insérer dans les pages la possibilité d'insérer un nouveau client à n'importe quel moment mais je me suis rendu compte que les choses étaient beaucoup trop compliquées. Du coup, j'ai créé une 4ème page et lorsque j'essaye de faire du "ménage" dans mon code, il y autre chose qui déconne ailleurs...

Bref un véritable casse-tête...

Je comprend tout à fait.

Est-il possible d'envoyer un nouveau fichier, dans lequel tu crée :

- le formulaire que tu aimerais avoir pour la partie COLIS (uniquement la MISE EN FORME, l'aspect visuel, je m'occupe du code derrière!)

actuellement

Après avoir fait ce formulaire, il faudra me dire:

Comment veux-tu qu'ils soient répartis?

  • 7 par page comme actuellement
  • les uns en dessous des autres
  • alignés horizontalement et verticalement
  • autre
  • Combien de pages veux-tu avoir?

Et en effet( je ne sais pas pourquoi je ne m'en suis pas rendu compte), les champs ne correspondent plus

mais normalement, il s'agit bien de remplir le numéro de client qui a 6 chiffres le nom de la société, adresse1 adresse2, nom du contact

CP, Ville et tél comme ci-dessous :

N° Client : 107832

Société : MONOP SMPDIS PRO DISTRIBUTION

Nom du contact : A.AUSSOUR/MR LENJALLEY DR

Adresse1 : 10 RUE DE L'ABREUVOIR

Adresse2 : (correspond à un complément d'adresse)

CP : 92400

Ville : COURBEVOIE

Tél : 01.41.15.98.80


Oui ça me semblerait parfait !

Nous pouvons expédier une bonne vingtaine de colis par jour.

Au départ j'avais créé un formulaire sous forme de tableau paysage (comme dans le fichier joint) mais je me suis vite rendu compte que l'on ne pouvait pas imprimer un tableau en VBA forme paysage sous excel 64 bits alors j'ai repensé la forme du tableau sous format portrait...

tableau paysage

Hmmmm alors là je fais 3 gros pas en arrière. Si initialement un tableau convient, pourquoi ne pas simplement avec une feuille Excel dans laquelle tu saisies les différentes informations et que tu imprimes directement en paysage???

Lorsque tous les envois sont terminés, il suffit de remettre la page à zéro et recommencer! Et pour le suivie des envois, un simple copier/coller vers une autre page et tu as ton historique!

Je vais te faire une proposition tu me diras ce que tu en penses.

je dois t'avouer y avoir pensé mais je n'y suis pas arrivé. Il faut tenir compte des clients existants, sur 20 ou 30 expéditions par jour, il doit y en avoir 10 à des nouveaux clients...

Oulala,

Lorsque tu cliques sur "Imprimer" d'une page, tu imprimes également les autres pages? Wtf?

Pour ma part j'avance dans la sauvegarde, la correction et l'amélioration de ton code. Par contre j'ai besoin de savoir comment l'utilisation du formulaire est faite.

Lorsque tu ouvres le formulaire, tu sais déjà que tu as X envois? Tu sais que tu as Y nouveaux clients? Tu saisis une info à la fois?

Bonjour,

Lorsque l'on ouvre le formulaire, on ne connaît pas encore le nombre de colis à expédier. On a toute la journée jusqu'à 16h que le transporteur passe. En principe, nous sommes amenés à travailler en classeur partagé mais je ne crois pas que cela soit possible en VBA... pour le bouton imprimer,je ne suis pas arrivé à faire autrement que d'imprimer toutes les pages.

Merci à toi

Voilà une proposition.

159valtaor1.xlsm (138.08 Ko)

Je te laisse faire différents tests de conformité et de vérification, et j'attends ton retour

tu es trop trop fort......

je n'ai pas d'autre mot, ou plutôt je reste sans mot...

Je te remercie infiniment pour tout et surtout pour ta patience.

j'aimerais un jour pouvoir être ne serait ce qu'un tout petit peu à ton niveau...mais ce n'est qu'un rêve je crois...

Encore un grand merci pour ce travail de pro.

Bonjour,

Une dernière demande pourrais m'indiquer comment séparer imprimer et sauvegarder en 2 boutons ?

Voilà le fichier corrigé selon ton besoin.

106valtaor1-1.xlsm (139.44 Ko)

J'ai oublié de te mettre en garde concernant la sauvegarde:

Si tu choisis un client (les différentes textbox se remplissent) et que tu modifie le contenu des txtbox, cela n'a aucun effet sur la sauvegarde. C'est à dire que les données qui vont être stockées dans la page "HISTO" sont les données présentes dans la page "DONNEES", et PAS les données présentes dans les différentes textbox. Je ne sais pas si cela convient à ton besoin ou non.

un grand merci à toi

Dans le formulaire nouveau contact, je voudrais ajouter un zero au champs numéro de téléphone, je pensais pouvoir y arriver avec la formule suivante

(Cellule.value, "0# ## ## ## ##")

mais ça ne marche pas

par ailleurs, je ne vois pas les champs et label dans les multipages comment as-tu fais ? (grand mystère) bon je sais que je ne suis pas doué mais...

merci pour tes éclaircissements

Qu'es-ce que tu entends par "ajouter un 0"?

Tu veux qu'à l'ouverture du formulaire d'ajout de contact, il y ai déjà un zéro?

C'est normalement que tu ne vois aucun label ni aucune textbox, elles sont générées dynamiquement dans le module de classe framePP

Pour le fonctionnement global, de manière dynamique j'ajoute des cadres (frame) dans les différentes pages du multipage.

# Dans le _Initalize du formulaire

Set ..... = MultiPage1.Pages(i - 1).Controls.Add("Forms.Frame.1")

Pour chacun de ces cadres (initialement vide), j'ajoute les différents éléments qui le composent:

# Dans le module de classe framePP, dans la procédure customizeFrame

Set mLabel1 = frameColis.Controls.Add("Forms.Label.1") 'contiendra le premier titre
Set mLabel2 = frameColis.Controls.Add("Forms.Label.1") 'contiendra le second titre
... 'etc...
Set mCode = frameColis.Controls.Add("Forms.Textbox.1")
Set mVille = frameColis.Controls.Add("Forms.Textbox.1")

Je dimensionne ET je place les différents éléments dans le cadre les uns par rapport aux autres

# Dans le module de classe framePP, dans la procédure initialiserControles

mLabel1.Width = 282

Je remplis les combobox (liste déroulantes)

# Dans le module de classe framePP, dans la procédure remplirCombobox

Private Sub mChoixNumero_Change()
    If mChoixNumero.ListIndex <> -1 Then
        With mChoixNumero
            mNom.Value = donnees(.ListIndex + 1, 3)
            ...
            mVille.Value = donnees(.ListIndex + 1, 9)
        End With
    End If
End Sub
Rechercher des sujets similaires à "copier donnees userform feuille"