remplir un formulaire depuis un tableau de données

judage

XLDnaute Nouveau
Bonjour à tous,
Je ne suis pas très fort en excel et j'aurais besoin d'un coup de main.
Je m’explique, j'ai un tableau de données avec une colonne "date de réception", une "désignation produit", une "fournisseur" et une autre "EAN". Sur plusieurs autres feuilles excel, toujours dans le même classeur, j'ai le même formulaire avec:
fournisseur : ...................
désignation : .....................
EAN : .........................
Date de réception : .................

J'aimerai savoir comment, ou quelle formule dois-je employer pour remplir automatiquement les lignes..................de tous mes formulaires ? est-ce possible de créer une formule qui relie chaque feuille excel et de faire un simple glisser pour que tous les formulaires se remplissent selon les différentes données ?

J'espère que je suis clair dans mes explications, c'est pas évident...et que quelqu'un saura m'aider car ce travail est hyper long et fastidieux lorsque j'ai un tableau avec une cinquantaine de références :s

Merci de m'aider,j'attends vos réponses Ô professionnels d'Excel :)
 

chris

XLDnaute Barbatruc
Re : remplir un formulaire depuis un tableau de données

Bonjour

Si tu envoyais un exemple de ton classeur ce serait plus facile de répondre : on comprends que tu as une liste dans un onglet mais pour les autres qui contiennent une présentation de type fiche ce n'est pas très clair.

Si c'est juste pour l'impression, une solution mixte Excel/Word publipostage serait bien adaptée.
 

judage

XLDnaute Nouveau
Re : remplir un formulaire depuis un tableau de données

ok voici 2 pièces jointes, la première le formulaire sous format word et la 2ème mon classeur excel avec mon formulaire simplifié, et des exemple de feuilles de données.
Au final, oui je dois l'imprimer peut-être que le publipostage serait mieux adapter, mais je ne sais pas du tout l'utiliser !!
merci
 

Pièces jointes

  • Classeur2.xlsx
    11.5 KB · Affichages: 273
  • Formulaire de contrôle.docx
    21.3 KB · Affichages: 171
  • Classeur2.xlsx
    11.5 KB · Affichages: 311
  • Classeur2.xlsx
    11.5 KB · Affichages: 293

chris

XLDnaute Barbatruc
Re : remplir un formulaire depuis un tableau de données

Bonjour

Le formulaire Word tu n'en avais pas parlé dans ton premier post : il te sert à quoi ?
C'est le modèle à remplir en publipostage ou bien il vient en amont de ta saisie dans Excel ?

Il serait plus pratique pour toi que tous les tableaux aient les mêmes en-tête de colonnes et commencent en A1 (ne pas sauter de ligne ni de colonne dans un tableau Excel) : tu pourrais ainsi avoir un seul modèle de publipostage dont seul l'onglet source serait à préciser.
 

judage

XLDnaute Nouveau
Re : remplir un formulaire depuis un tableau de données

Bonjour

En fait le formulaire Word, c'est le formulaire que je dois remplir pour chaque référence de produits. Mais ces références, je les ai dans un classeur Word sur plusieurs feuilles différentes. J'ai retravaillé le classeur comme vous me le conseillez.
Merci :)
 

Pièces jointes

  • Classeur2.xlsx
    10.9 KB · Affichages: 184
  • Classeur2.xlsx
    10.9 KB · Affichages: 224
  • Classeur2.xlsx
    10.9 KB · Affichages: 222

judage

XLDnaute Nouveau
Re : remplir un formulaire depuis un tableau de données

bonne nouvelle j'ai réussi via le publipostage ce que je voulais, au final je n'ai pas besoin d'avoir plusieurs feuilles de données excel :D
Reste une chose, c'est peut-être plus complexe mais écologique, je me retrouve donc avec plusieurs feuilles word il faudra que je voie si il est possible d'imprimer en recto verso pour économiser des feuilles car mon vrai formule se compose de 2 feuilles seulement seule la première peut-être préremplie par ordinateur, la deuxième je dois contrôler visuellement le produit pour sa conformité..je pense qu'il doit bien y avoir une manip avec "pages paires" "pages impaires"...ou un truc du genre.
merci
 

chris

XLDnaute Barbatruc
Re : remplir un formulaire depuis un tableau de données

Bonjour

Si tu as une imprimante recto verso, c'est elle qui va gérer, sinon effectivement dans Word, on peut imprimer les pages paires et les impaires séparément et aussi commencer par la fin (qaund on retourne la paquet l'ordre est inversé).
Ne pas oublier de remettre les options normales après impression car sinon, à la prochaine impression d'un courrier on est surpris !

Petit conseil toujours faire le publipostage vers un fichier et non directement vers l'imprimante : indispensable pour un recto verso manuel et utile dans les autres cas, car on n'est jamais à l'abri d'un souci d'impression et il est plus facile de relancer à partir d'un document que refaire un publipostage partiel.
 

EL BASRI NAJIB

XLDnaute Nouveau
Bonjour ;
Si possible de m'aider S'il vous plait à trouver une solution à mon code VBA pour faire des Enregistrements sur la même feuille Excel ; c'est à dire, insérer le contenue de la Cellule C7 dans la Ligne C23 avec le Code suivant :
Range("C7").Value = Range("C12" & Ligne).Value
Et merci d'avance pour votre aide
 

soan

XLDnaute Barbatruc
Inactif
Bonjour EL BASRI NAJIB,

bienvenue sur le site XLD ! :)

tu as écrit : « insérer le contenu de la cellule C7 dans la cellule C23 »

utilise cette instruction : [C23] = [C7]

comme la feuille n'est pas précisée, c'est sur la feuille active ; sinon, tu as ces 3 choix :

1) indiquer explicitement la feuille :

Worksheets("Feuil5").[C23] = Worksheets("Feuil5").[C7]

ou plus simplement : [Feuil5!C23] = [Feuil5!C7]

2) sélectionner d'abord la feuille, ainsi :

VB:
Sub Essai()
  Worksheets("Feuil5").Select
  [C23] = [C7]
End Sub

3) tester le nom de la feuille :

VB:
Sub Essai()
  If ActiveSheet.Name <> "Feuil5" Then Exit Sub
  'donc la suite du code est seulement sur "Feuil5"
  'pour les références de cellules sans mention de
  'feuille explicite
  [C23] = [C7]
End Sub



si c'est la ligne 23 qui est variable, tu peux utiliser au choix :

Range("C7").Value = Range("C" & Ligne).Value

Range("C7") = Range("C" & Ligne)

[C7] = Range("C" & Ligne)

[C7] = Cells(Ligne, "C")

[C7] = Cells(Ligne, 3)



si tu veux davantage d'aide, ce sera mieux
que tu crées ton propre sujet ! ;)

soan
 

EL BASRI NAJIB

XLDnaute Nouveau
Bonsoir Mr,. Soan
Je vous remercie infiniment sur votre réponse et votre aide je l'apprécie beaucoup
Pour la création de mon propre sujet j'ai essayé de faire mais ça pas marché je vais ressayer plus tard
Je reviens sur ce code : Range("C7").Value = Range("C" & Ligne).Value
Je l'ai utilisé mais ça pas fonctionné je sais pas s'il faut déclarer des variables ou non pour le reste je vais l'essayer demain
Et merci beaucoup pour votre aide
 

soan

XLDnaute Barbatruc
Inactif
Bonjour EL BASRI NAJIB,

tu as écrit :

« Pour la création de mon propre sujet j'ai essayé de le faire mais ça n'a pas marché »

en haut de ton écran, et à gauche, tu peux voir ceci :

Image 1.jpg


à droite, tu dois voir ceci (mais avec ton pseudo au lieu de "soan") :

Image 2.jpg


pour créer un nouveau sujet, tu dois cliquer sur le bouton orange "Créer une discussion" ; mais si tu l'as déjà fait et que ça n'a pas marché, je n'ai pas d'autre moyen à proposer ; peut-être que c'était un problème temporaire dû à ta connexion internet, ou au serveur XLD ? si c'est ça et que tu réessayes plus tard, ça marchera peut-être mieux ? bonne chance pour ton prochain essai ! 🍀



pour : Range("C7").Value = Range("C" & Ligne).Value

je rappelle que tu peux l'écrire ainsi : [C7] = Cells(Ligne, "C")

c'est pareil, en version plus courte. 🙂



comme C7 est la cellule C7, la seule variable est : Ligne

si tu n'as pas mis Option Explicit au début de Module1, ce n'est pas obligé de déclarer les variables ; c'est seulement facultatif ; tu peux donc, au choix, mettre ou non :

Dim Ligne As Long ; ou son équivalent plus court : Dim Ligne&

perso, je préfère utiliser les versions plus courtes (c'est plus rapide à écrire et à lire).

je préfère aussi mettre Option Explicit en début de module ; dans ce cas, bien sûr, la déclaration des variables n'est plus facultative mais obligatoire ; bien que beaucoup le voient comme un inconvénient, c'est en réalité un très gros avantage : pas de risque d'utiliser une variable non déclarée avant ; pas de risque de création d'une nouvelle variable due à une bête faute de frappe dans le nom de la variable, donc ça évite les conséquences erronées ; contrôle des types de variables, et détection de certaines erreurs qui y sont liées.​



tu as écrit : « ça n'a pas fonctionné », mais sans préciser ce qui s'est mal passé ; si y'a eu un message d'erreur, quel était le texte exact de ce message ? autre anomalie ? cependant, je pense qu'il n'y a que 2 raisons pour lesquelles ça n'a pas marché :

1) la variable Ligne n'était pas correctement initialisée ; par exemple si Ligne vaut zéro, la ligne 0 n'existe pas ➯ plantage ; idem si Ligne est déclaré avec le type Integer et que Ligne > 32767 ; idem si Ligne est déclaré avec le type Long et que Ligne > 1048576, car 1048576 est la dernière ligne d'une feuille de calcul ; et même, pour des fichiers .xls : dernière ligne : 65536.

2) la feuille de calcul est peut-être protégée (protection simple ou avec mot de passe) ; dans ce cas, il faut déprotéger la feuille avant de faire le job ; puis après le job, ne pas oublier de protéger à nouveau la feuille.

attention : ça peut arriver qu'il y aie à la fois 1) et 2) ! 😜

soan
 
Dernière édition:

EL BASRI NAJIB

XLDnaute Nouveau
Bonjour EL BASRI NAJIB,

tu as écrit :

« Pour la création de mon propre sujet j'ai essayé de le faire mais ça n'a pas marché »

en haut de ton écran, et à gauche, tu peux voir ceci :

Regarde la pièce jointe 1106614

à droite, tu dois voir ceci (mais avec ton pseudo au lieu de "soan") :

Regarde la pièce jointe 1106615

pour créer un nouveau sujet, tu dois cliquer sur le bouton orange "Créer une discussion" ; mais si tu l'as déjà fait et que ça n'a pas marché, je n'ai pas d'autre moyen à proposer ; peut-être que c'était un problème temporaire dû à ta connexion internet, ou au serveur XLD ? si c'est ça et que tu réessayes plus tard, ça marchera peut-être mieux ? bonne chance pour ton prochain essai ! 🍀



pour : Range("C7").Value = Range("C" & Ligne).Value

je rappelle que tu peux l'écrire ainsi : [C7] = Cells(Ligne, "C")

c'est pareil, en version plus courte. 🙂



comme C7 est la cellule C7, la seule variable est : Ligne

si tu n'as pas mis Option Explicit au début de Module1, ce n'est pas obligé de déclarer les variables ; c'est seulement facultatif ; tu peux donc, au choix, mettre ou non :

Dim Ligne As Long ; ou son équivalent plus court : Dim Ligne&

perso, je préfère utiliser les versions plus courtes (c'est plus rapide à écrire et à lire).

je préfère aussi mettre Option Explicit en début de module ; dans ce cas, bien sûr, la déclaration des variables n'est plus facultative mais obligatoire ; bien que beaucoup le voient comme un inconvénient, c'est en réalité un très gros avantage : pas de risque d'utiliser une variable non déclarée avant ; pas de risque de création d'une nouvelle variable due à une bête faute de frappe dans le nom de la variable, donc ça évite les conséquences erronées ; contrôle des types de variables, et détection de certaines erreurs qui y sont liées.​



tu as écrit : « ça n'a pas fonctionné », mais sans préciser ce qui s'est mal passé ; si y'a eu un message d'erreur, quel était le texte exact de ce message ? autre anomalie ? cependant, je pense qu'il n'y a que 2 raisons pour lesquelles ça n'a pas marché :

1) la variable Ligne n'était pas correctement initialisée ; par exemple si Ligne vaut zéro, la ligne 0 n'existe pas ➯ plantage ; idem si Ligne est déclaré avec le type Integer et que Ligne > 32767 ; idem si Ligne est déclaré avec le type Long et que Ligne > 1048576, car 1048576 est la dernière ligne d'une feuille de calcul ; et même, pour des fichiers .xls : dernière ligne : 65536.

2) la feuille de calcul est peut-être protégée (protection simple ou avec mot de passe) ; dans ce cas, il faut déprotéger la feuille avant de faire le job ; puis après le job, ne pas oublier de protéger à nouveau la feuille.

attention : ça peut arriver qu'il y aie à la fois à 1) et 2) ! 😜

soan
Le message est bien reçu chef, je vous remercie infiniment, je vais essayer avec les réponses que vous m'avez envoyé et s'il y a qqch je reviens vers, et j'espère que je ne vous dérange pas chef
Merci beaucoup
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 158
Membres
103 139
dernier inscrit
Bidi