Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2524 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [ Excel ] Remplissage automatique de champs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ Excel ] Remplissage automatique de champs

n°2568713
pcfcx
Posté le 11-11-2006 à 07:59:49  profilanswer
 

Bonjour,
 
J'ai une liste d'articles ayant plusieurs caractéristiques chacunes (code, couleur, designation,etc...)
 
Je voudrais qu en tapant uniquement de code d'un article par exemple, tous les champs de la ligne de ma feuille excel se remplisse automatiquement des autres caractéristiques de l'article concerné.
 
Comment faire ?
 
Merci
 

mood
Publicité
Posté le 11-11-2006 à 07:59:49  profilanswer
 

n°2568855
seniorpapo​u
Posté le 11-11-2006 à 12:08:17  profilanswer
 

Bonjour,
par exemple:
on supposera que:
 
la feuille 2 contient tous les codes connus(colonne 1) et leurs caractéristiques
la feuille 1 contient en colonne 1 la saisie des codes article
 
 
A) feuille 2
au niveau du module feuil2
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Cells.Select
    Selection.CreateNames Top:=False, Left:=True, Bottom:=False, Right:=False
Range("a:a" ).Select
    ActiveWorkbook.Names.Add _
        Name:="listecode", _
        RefersTo:="=feuil2!$A:$A"
 
End If
End Sub
 
B) feuille 1
surligner la colonne a
données->validation    liste  mettre dans la case de la zone de liste: listecode
 
au niveau du module feuil1
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
If Target.Column = 1 Then
 
Worksheets(2).Range(Target.Value).Copy Destination:=Target.Offset(0, 1)
 
End If
End Sub
 
 
 Cordialement

n°2568994
seniorpapo​u
Posté le 11-11-2006 à 14:32:06  profilanswer
 

Bonjour,
autre version:
 
la feuille 2 contient tous les codes connus(colonne 1) et leurs caractéristiques  
la feuille 1 contient en colonne 1 la saisie des codes article  
 
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
If Target.Column = 1 Then
 
 With Worksheets(2).Range("a:a" )
    Set c = .Find(Target, LookIn:=xlValues)
    If Not c Is Nothing Then
        monr = "a" & c.Row
        Application.EnableEvents = False
        Worksheets(2).Range(monr).EntireRow.Copy Destination:=Target
        Application.EnableEvents = True
    Else
        MsgBox "inconnu"
    End If
 End With
End If
End Sub

n°2569424
pcfcx
Posté le 12-11-2006 à 00:14:51  profilanswer
 

aie aie aie
 
qelques precisions:
Comment mettre les données initiales
comment intégrer le code
 
Bref....tout
 
Merci encore

n°2569472
seniorpapo​u
Posté le 12-11-2006 à 08:16:31  profilanswer
 

Bonjour,
Pour les données initiales:
Je suppose que tu as imaginé comment tu organisais tes données.
Tu dois avoir mis dans une feuille de ton classeur la liste des codes avec leurs caractéristiques  par exemple dans feuil2 :
   A            B         C           D             E    
1 Code     couleur  Désign. etc...
2 26001     bleu     crayon
3..........  .......... .............
 
Ensuite, dans la feuille 1
 
    A           B             C            D    
1  Code    Couleur   Désignation .....
2 ?????    ........... ...........      .......
 
Dans cette feuille 1 si tu entres en A2 un code existant dans la feuille2, les valeurs de couleur désignation  etc... seront recopiées lorque tu auras introduit le code .
 
pour intégrer le code:
 
tu surlignes la partie ci dessous depuis Private jusqu'à End Sub, puis clic droite et copier. Ensuite dans Excel tu fais outils->macro-> visual Basic; dans la fenêtre vb  double clic sur feuil1
dans la grande zone de droite tu colles ce que tu as copié.
tu reviens sur ton classeur.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
 
If Target.Column = 1 Then  
 
 With Worksheets(2).Range("a:a" )  
    Set c = .Find(Target, LookIn:=xlValues)  
    If Not c Is Nothing Then  
        monr = "a" & c.Row  
        Application.EnableEvents = False  
        Worksheets(2).Range(monr).EntireRow.Copy Destination:=Target  
        Application.EnableEvents = True  
    Else  
        MsgBox "inconnu"  
    End If  
 End With  
End If  
End Sub
 
Ensuite nous verrons, si tu ne sais pas faire comment saisir le code à partir de la liste des codes existants, ce qui évite les erreurs de frappe.
Bien entendu, la mise en place des données dépend entièrement de la façon dont tu veux t'organiser, si tu les placent autrement, dis le et on réagira en fonction de ta disposition.
 
Cordialement

Message cité 1 fois
Message édité par seniorpapou le 12-11-2006 à 08:18:58
n°2880311
Marorais
Posté le 18-07-2009 à 18:43:12  profilanswer
 

Salut !
 
et surtout Merci !
après avoir perdu plusieurs heures à chercher une solution à mon problème, je suis finalement tombée sur ta formule magique !
Même si je n'y comprends goutte, elle correspond à mes attentes, et suis super contente.  
 
Je vais donc l'enregistrer sur ma clé USB afin de la coller dans mon classeur dès lundi au boulot... car c'est uniquement là-bas qu'elle me sera utile, j'espère qu'elle fonctionnera aussi bien qu'à la maison (je suis affectée à un nouveau poste, n'ai pas encore pensé à relever la version Excel qu'ils utilisent).  
Vais gagner beaucoup de temps... et aussi l'estime de mes collègues !!!  
 
J'ai suivi à la lettre tes recommandations pour copier la macro et l'appliquer à la feuille 1 de mon classeur, et j'ai ainsi fait un grand pas en avant...
 
Je voudrais en parallèle appliquer la même macro à la feuille 3 : quelles données faut-il modifier ? (J'ai bidouillé un peu, mais le résultat est trop étonnant pour être le bon !)
 
Bizzz à seniorpapou = superpapou !
Marorais
 

seniorpapou a écrit :

Bonjour,
Pour les données initiales:
Je suppose que tu as imaginé comment tu organisais tes données.
Tu dois avoir mis dans une feuille de ton classeur la liste des codes avec leurs caractéristiques  par exemple dans feuil2 :
   A            B         C           D             E    
1 Code     couleur  Désign. etc...
2 26001     bleu     crayon
3..........  .......... .............
 
Ensuite, dans la feuille 1
 
    A           B             C            D    
1  Code    Couleur   Désignation .....
2 ?????    ........... ...........      .......
 
Dans cette feuille 1 si tu entres en A2 un code existant dans la feuille2, les valeurs de couleur désignation  etc... seront recopiées lorque tu auras introduit le code .
 
pour intégrer le code:
 
tu surlignes la partie ci dessous depuis Private jusqu'à End Sub, puis clic droite et copier. Ensuite dans Excel tu fais outils->macro-> visual Basic; dans la fenêtre vb  double clic sur feuil1
dans la grande zone de droite tu colles ce que tu as copié.
tu reviens sur ton classeur.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
 
If Target.Column = 1 Then  
 
 With Worksheets(2).Range("a:a" )  
    Set c = .Find(Target, LookIn:=xlValues)  
    If Not c Is Nothing Then  
        monr = "a" & c.Row  
        Application.EnableEvents = False  
        Worksheets(2).Range(monr).EntireRow.Copy Destination:=Target  
        Application.EnableEvents = True  
    Else  
        MsgBox "inconnu"  
    End If  
 End With  
End If  
End Sub
 
Ensuite nous verrons, si tu ne sais pas faire comment saisir le code à partir de la liste des codes existants, ce qui évite les erreurs de frappe.
Bien entendu, la mise en place des données dépend entièrement de la façon dont tu veux t'organiser, si tu les placent autrement, dis le et on réagira en fonction de ta disposition.
 
Cordialement


n°2880435
seniorpapo​u
Posté le 19-07-2009 à 07:34:47  profilanswer
 

Bonjour,
pour la feuil3, est-ce que ta feuille de références est aussi la feuil2?
si oui, il suffit, de faire :
tu surlignes la partie ci dessous depuis Private jusqu'à End Sub, puis clic droite et copier. Ensuite dans Excel tu fais outils->macro-> visual Basic; dans la fenêtre vb  double clic sur feuil3.........etc
 
 
Mais, avant de te lancer, as-tu regardé du côté de la fonction recherchev??
=SIERREUR(RECHERCHEV($A2;Feuil2!$A:$G;COLONNE(B$1);FAUX);"" )  
 
à placer dans tes colonnes, sans utiliser VBE. On peut en parler si tu veux.
 
Cordialement

n°2880586
Marorais
Posté le 19-07-2009 à 16:57:58  profilanswer
 

Salut,
 
J’ai fini par me débrouiller pour la feuille 3 : j’ai remplacé par (3) tous les (2) de la formule.  
(En fait, il n’y avait que deux substitutions de ce type à faire, et j’ai été fichue d’en louper une lors de mes premiers essais, quelle bringue !).
 
Au passage, petite question : si je donne un nom à chaque feuille du classeur, faudra-t-il modifier en conséquence les données de la formule  
(genre : remplacer « With Worksheets(2).etc » par « With Worksheets(Nom de la feuille).etc »" ) ?
 
Concernant ton conseil d’utiliser la fonction rechercheV : je n’y comprends rien, c’est vraiment du charabia pour moi et je n’ai pas le temps de m’y atteler (suis en train de prendre mes marques à mon nouveau boulot, mais j’envisage sérieusement de m’inscrire à des cours d’informatique le soir à la rentrée).  
 
A présent, le plus dur : j’ai besoin d’une autre macro du même genre que la première, mais en plus compliquée. Comme j’ai peur d’abuser de ta gentillesse, fais-moi savoir sans état d’âme si tu serais prêt à me la servir sur un plateau ? De toute façon, j’ai déjà réalisé un grand bond en avant et ne te remercierai jamais assez pour le service rendu.
 
Bonne soirée !
 
Marorais

n°2880604
seniorpapo​u
Posté le 19-07-2009 à 18:02:52  profilanswer
 

Bonsoir,
 
il est préférable de mettre le nom de la feuille, bien entendu, cela sera plus "parlant" et plus sûr, parce que si tu insères une feuille (par exemple feuil4) entre feuil1 et feuil2,  worksheets(2) pointera sur la deuxième feuille, donc feuil4, et non plus sur tes données!!!
Pour une autre macro, on peut t'aider, on peut en reparler.
 
Bonne soirée

n°3081349
sandysum
Posté le 14-03-2013 à 20:58:49  profilanswer
 

Bonjour à tous,
 
Je me casse la tête depuis hier soir avec mon fichier et je ne trouve pas de solution (je suis novice moi aussi).
 
Je fais appel à vous car je voudrais effectuer les mêmes opérations que Marorais, mais avec un remplissage non pas à partir de la colonne A.
J'aimerais taper une donnée dans la colonne C et que ça remplisse seulement la colonne D.
(C étant : "catégorie de tarif", et D : "tarif associé à cette catégorie" )
 
J'ai essayé avec la formule de seniorpapou et ça fonctionne, mais seulement si je place "catégorie de tarif" dans la colonne A et "tarif associé à cette catégorie" en B).
Or je ne peux pas faire ça puisque mes colonnes A et B seront utilisées pour d'autres données que je vais entrer manuellement et ponctuellement.
 
Est-ce que quelqu'un peut m'aider avec ça ?
 
Un grand merci par avance.
 
Bonne journée !
 
Sandysum.

mood
Publicité
Posté le 14-03-2013 à 20:58:49  profilanswer
 

n°3081482
seniorpapo​u
Posté le 16-03-2013 à 07:28:02  profilanswer
 

Bonjour, tu m'as réveillé!!!
c'est bien la formule : =SIERREUR(RECHERCHEV($A2;Feuil2!$A:$G;COLONNE(B$1);FAUX);"" )  
qui t'intéresse?  
dans un premier temps, tu vas  regarder l'aide sur RECHERCHEV, dans un deuxième temps je t'explique. A tout à l'heure

n°3081720
sandysum
Posté le 19-03-2013 à 01:58:14  profilanswer
 

Bonjour seniorpapou !!
 
Si tu savais comme je n'y connais rien !
J'essaie de décrypter ta formule mais n'y vois goutte ! Et pourtant ça m'intéresse vraiment de comprendre le truchement de tout ça !
 
Aurais-tu la gentillesse d'éclairer les lanternes d'une pauvre novice en la matière qui ne demande qu'à apprendre ?
 
Un grand merci !

n°3081764
seniorpapo​u
Posté le 19-03-2013 à 14:00:08  profilanswer
 

Bonjour,
 
RECHERCHEV(valeur_cherchée, table_matrice, no_index_col, [valeur_proche])La syntaxe de la fonction RECHERCHEV contient les arguments (argument : valeur qui fournit des informations à une action, un événement, une méthode, une propriété, une fonction ou une procédure.) suivants :
 
valeur_cherchée  Obligatoire. La valeur à chercher dans la première colonne du tableau ou de la plage. L’argument valeur_cherchée peut être une valeur ou une référence. Si la valeur que vous fournissez pour l’argument valeur_cherchée est inférieure à la plus petite valeur contenue dans la première colonne de l’argument table_matrice, RECHERCHEV renvoie la valeur d’erreur #N/A.
table_matrice  Obligatoire. Plage de cellules qui contient les données. Vous pouvez utiliser une référence à une plage (par exemple, A2:D8) ou un nom de plage. C’est sur les valeurs de la première colonne de table_matrice que porte valeur_cherchée. Ces valeurs peuvent être du texte, des nombres ou des valeurs logiques. La fonction ne fait pas de distinction entre les majuscules et les minuscules.  
no_index_col  Obligatoire. Numéro de la colonne de l’argument table_matrice dont la valeur correspondante doit être renvoyée. Si l’argument no_index_col est égal à 1, la fonction renvoie la valeur de la première colonne de l’argument table_matrice ; si l’argument no_index_col est égal à 2, la valeur de la deuxième colonne de l’argument table_matrice est renvoyée, et ainsi de suite.
Si l’argument no_index_col est :
 
inférieur à 1, RECHERCHEV renvoie la valeur d’erreur #VALEUR! ;
supérieur au nombre de colonnes dans table_matrice, RECHERCHEV renvoie la valeur d’erreur #REF!.
valeur_proche  Facultatif. Représente une valeur logique indiquant si vous souhaitez que la fonction RECHERCHEV recherche une valeur exacte ou voisine de celle que vous avez spécifiée :
Si l’argument valeur_proche est VRAI ou omis, une donnée exacte ou proche est renvoyée. Si aucune valeur exacte n’est trouvée, la valeur immédiatement inférieure à valeur_cherchée est renvoyée.  
Important  Si l’argument valeur_proche est VRAI ou omis, les valeurs de la première colonne de table_matrice doivent être classées en ordre croissant ; sans cela, il se peut que RECHERCHEV ne renvoie pas la bonne valeur.
 
 
Si tu places tes catégories en colonne C, à partir de la ligne 2, alors tu écris la formule en colonne D à partir de la ligne 2 et tu "étends la formule" sur cette colonne. La "matrice" n'ayant pas changé de place ( ici en feuil2 colonnes A à G)
La formule est la suivante:
 
=SIERREUR(RECHERCHEV($C2;Feuil2!$A:$G;COLONNE(B$1);FAUX);"" )  
tout simplement.
Je peux compléter l'information si tu le souhaites.
Cordialement


Message édité par seniorpapou le 19-03-2013 à 14:15:38
n°3081938
sandysum
Posté le 20-03-2013 à 21:26:40  profilanswer
 

Bonjour !
 
Merci pour le temps que tu m'accordes.
 
J'ai essayé ce que tu m'as dit de faire mais ça ne fonctionne pas. J'obtiens le message "#Name?" dans la colonne D de mon fichier à remplir, lorsque je copie la formule dans une de ses cases.
 
Ma matrice dans mon deuxième onglet comporte seulement 2 colonnes A et B. J'ai essayé d'en ajouter d'autres vides de façon à ce que mes catégories soient en colonne C, mais ça ne fonctionne pas mieux.
 
Tout comme Marolais, c'est tout nouveau et un peu du charabia pour moi. Je crois que je comprends mais je ne sais pas pourquoi ça ne veut pas fonctionner.
 
Au secours !!!!
 

n°3081945
seniorpapo​u
Posté le 21-03-2013 à 06:45:38  profilanswer
 

Bonjour, je te mets en MP mon mail, tu pourras m'envoyer ton excel que je l'étudie.
Si tu n'es pas habitué(e) du forum, pour lire les MP, regarde en haut de la page et tu verras un petit texte qui clignote en rouge, clique dessus...
Bonne journée


Message édité par seniorpapou le 21-03-2013 à 06:50:37
n°3082322
sandysum
Posté le 25-03-2013 à 17:29:51  profilanswer
 

Merci Seniorpapou pour ton aide si précieuse et experte !
 
Tout est rentré dans l'ordre à présent.
 
Message explicatif pour les autres utilisateurs :  
Le problème du message "#Name?" qui apparaissait venait du fait que ma version de Excel est en anglais, et donc pas contente de recevoir des formules dans la langue de Molière !
 
Après traduction de cette formule dans la langue de Shakespeare, tout fonctionne, et les cellules se remplissent automatiquement dans ma colonne D , lorsque je saisis des données dan ma colonne C.
 
Donc à la place de :
=SIERREUR(RECHERCHEV($C2;Feuil2!$A:$G;COLONNE(B$1);FAUX);"" )
 
Il fallait écrire : =IFERROR(VLOOKUP($C2;Feuil2!$A:$G;COLUMN(B$1);FALSE);"" )
 
En espérant que ça pourra aider d'autres personnes dans la même situation que moi !
 

n°3297959
bingobirdy
Posté le 25-01-2018 à 09:09:31  profilanswer
 

Bonjour je vois que ce fil est inactif depuis longtemps, mais je tente quand même, car c'est depuis que je cherche sur le net, celui qui semble le plus près de mes recherches.
 
J'utilise un tableau Excel avec des titres option tri allant de A1 à R1.
Ce tableau évolue car je rajoute des lignes tous les jours.
 
 A       B          C            D             E         F            L             M
1     Client   Vendeur   Agence     etc.      etc.      Mobile       Mail
2     AAA       Alain       Paris      .......    ........     06/06      a@aa.fr
3    BBBB    Bernard     Lille       .......    ........     06/07      b@bb.fr
4     CCC      Claude     Lyon       ......     .......      06/08     c@cc.fr
5
6
7     AAA
 
Il ressemble à ceci.
J'aimerai, lorsque je saisis le nom du client en B, ici par exemple AAA, que les données qui sont liées, en C, D, L, M dans le tableau se remplissent seules.
Les autres cellules de la lignes devant rester vides car variables.
Je pense que je dois dans un premier temps créer un tableau qui serve de base de données à la fonction.
J'imagine que cela doit être possible, mais comme je n'y connais rien à rien je cherche de l'aide, alors si seniorpapou ou un autre cador de la discipline, pouvait me filer un coup de main ce serait vraiment cool.
J'espère que l'explication a été assez claire.
Merci d'avance.


Message édité par bingobirdy le 25-01-2018 à 11:39:37
n°3298061
bingobirdy
Posté le 26-01-2018 à 08:05:11  profilanswer
 

Les données sont dans une autre page que j'ai créé et  nommé BDD.
 
C'est bon, j'ai réussi avec recherchev à faire une formule qui fonctionne :
 
=RECHERCHEV(A4;BDD!A:M;2;0)
 
Merci de l'aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [ Excel ] Remplissage automatique de champs

 

Sujets relatifs
XP login automatiqueTableau croisé dynamique dans excel
Est-ce possible sur Excel...?[Excel] Mettre en page plusieurs graphiques (résolu)
[SQL Server/MSDE] Déploiement automatique de service packEXCEL : mise a jour automatique de la date
[EXCEL] Fusion de feuilles façon base de donnée ?[Résolu][Excel] Redimensionnement Auto d'une Courbe
acces importation fichier Excel- Fprcer le type de champs 
Plus de sujets relatifs à : [ Excel ] Remplissage automatique de champs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR