bast26
Messages postés6Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention 2 avril 2006
-
28 mars 2006 à 01:04
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
28 mars 2006 à 14:13
Bonjour,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Je souhaite réaliser une macro dans excel qui me permettrai d insérer des données dans un tableau existant a partir d un autre tableau.
Onglet 1 « Tableau à remplir »
Code Désignation Janvier Février
16301 Coffret 2
16302 Coffret 3
Onglet 2 « Donnes »
Code Désignation Quantité
16301 Coffret 2 40
16302 Coffre3 50
Il faut que je crée une macro qui permet de chercher les quantités dans l onglet « Donnes » pour les insérer automatiquement dans l onglet « tableau a remplir ». La macro devra me permettre de choisir la colonne en fonction du mois. Aussi la macro devra rechercher la bonne référence il va avoir autour de 500 articles.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 mars 2006 à 09:50
Salut,
Le mieux c'est de créer un Userform (ex : frmInsereDonnees)
tu y places 2 combobox (ex : cboReference, cboMois)
et un commandbutton (ex : cbtValider)
En haut, dans les déclarations :
Dim PremLigneVide As
Dans le UserForm_Initialize()
With cboMois
.AddItem ("janvier") ça rempli le combobox avec les mois
.AddItem ("février")
"" etc... pour chaque mois
End With
Sheets("Donnes").Select
PremLigneVide = Columns(1).Find ("", [A1], , , xlByRows, xlNext).Row ça cherche la 1ere ligne vide
cboReference.RowSource = "A2:A" & PremLigneVide ça c'est pour remplir la combobox de tes codes
End Sub
Puis dans le
cbtValider_Click()
Il faut récupérer les valeurs que t'auras choisi :
RefChoisi = cboReference.Value
MoisChoisi = cboMois.Value
Maintenant faut rechercher la correspondance entre le code du produit que tu choisi et ce qui existent dans ta feuille de donnée :
For i = 2 To PremLigneVide
RefSaisie = Cells(i, 1).Value
If RefSaisie = RefChoisi Then
Quantite = Cells(i, 3).Value
Sheets("Tableau à remplir").Select
Select Case MoisChoisi
Case "janvier": ColonneASaisir = 3
Case "février": ColonneASaisir = 4
etc.. pour chaque mois
End Select
Cells(i, ColonneASaisir).Value = Quantite
End If
Next i
End Sub
Par contre, ça ne fonctionne que si tes produits placés dans la feuille "Donnés" sont aux même numéro de lignes que dans le feuille "Tableau à remplir".
Si il y a un décalage, dis le moi et je te donne la combine pour faire correspondre
bast26
Messages postés6Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention 2 avril 2006 28 mars 2006 à 13:04
Salut merci pour ton aide je sais pas comment te remercier.
Je suis debutant en macro
Les lignessont decales, il faut que la macro donc recherche la reference 16301 dans l onglet "donnee" et mette la valeur 40 dans l onglet tableau a remplir.
Je t explique le cas je recoi de la marchandise (Facture sous excel) et je doit rentrer cette marchandise dans mes stocks, le truc ce que j ai 500 articles et je recoi jamais 500 articles en meme temps.
Merci pour ton aide
je peux t envoyer le fichier si tu veux tu comprendra mieux.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 mars 2006 à 13:48
Rajoute ce que je te mets en Rouge :
Maintenant faut rechercher la correspondance entre le code du produit que tu choisi et ce qui existent dans ta feuille de donnée :
For i = 2 To PremLigneVide
RefSaisie = Cells(i, 1).Value
If RefSaisie = RefChoisi Then
Quantite = Cells(i, 3).Value
Sheets("Tableau à remplir").Select
Select Case MoisChoisi
Case "janvier": ColonneASaisir = 3
Case "février": ColonneASaisir = 4
etc.. pour chaque mois
End Select
PremLigneVide2 = Columns(1).Find ("", [A1], , , xlByRows, xlNext).Row ça cherche la 1ere ligne vide
For j = 2 To PremLigneVide2 If Cells(j, 1).Value RefChoisie Then Cells(j, ColonneASaisir).Value Quantite
Exit Sub Très important, sinon, ta boucle continu et ta valeur sera égale a ""
Next j
<STRIKE>Cells(</STRIKE><STRIKE>i, ColonneASaisir).Value =</STRIKE> <STRIKE>Quantite </STRIKE> Et ca tu le supprimes, car c'est plus le i qui nous interesse mais le j
End If
Next i
En gros, pour tout le code que je t'ai filé,
La feuille Donnés se sélectionne, il prend la cellule A1 et regarde si elle est vide, si non vide, passe à A2, etc... jusqu'à ce qu'il trouve une cellule vide pour noter son numéro de lignes.
Ensuite il parcours l'ensemble des cellules (For...Next) et dès qu'il trouve le bon produit par son numéro, ça récupère le nombre de quantité.
Après il prend l'autre feuille et fait la même opération de recherche. Quand il l'a trouvé, place le nombre dans la bonne colonne suite au choix que tu auras fait par rapport au mois
Par contre, si t'as un problème, je ne pourrais malheureusement plus répondre avant vendredi matin, là j'ai fini le Taf (depuis midi, je fais du rab pour aller sur ce site) et j'ai pas internet chez moi (pire qu'un vieux).
Bon courage à toi et peut-être à vendredi si t'es dans le besoin
Mortalino
Vous n’avez pas trouvé la réponse que vous recherchez ?