Jacky1002
Messages postés94Date d'inscriptionmardi 11 mai 2010StatutMembreDernière intervention 3 avril 2011
-
23 avril 2010 à 10:28
Jacky1002
Messages postés94Date d'inscriptionmardi 11 mai 2010StatutMembreDernière intervention 3 avril 2011
-
27 avril 2010 à 08:25
Bonjour,
Malgrès toutes les info présentent sur ce site je ne parvient pas a me débloquer. (je débute sur VBA)
je vous mets dans le contexte.
Je crée une genre de gestion de stock pour mon stage.
A partir d'un listing de pièces, je clique sur un lien hypertxt pour accéder à "l'historique de la pièce" qui est une feuille du même classeur.
Sur cette fiche historique jai les référence, le nom de la pièce, et sa désignation que je copie via un bouton VB vers des cellule d'une autre fiche (le bon de commande) et qui passe a la ligne d'en dessous si ces cellule sont pleines.
Pour le prix idem je copie le dernier prix de la fiche historique pour le coller sur la dernière ligne du bon de commande.
pour linstant je colle vers des cellules qui change mais qd je veux copier l'adresse du fournisseur (a savoir dernière ligne pleine de la colonne adresse de la feuille historique) et que je veux la coller dans une cellule fixe du bon de commande je galère... (pour info : l'adresse le nom de la pièce le prix .....doivent etre copier et coller par le meme bouton VB)
Voici mon code qui me permet de copier coller la référence le nom, la désignation (Tout trois fixe) et le prix variable ; sans la copie d'adresse :
Sub comande3()
Dim ProchaineLigneVide As Integer
With Sheets("Commande")
ProchaineLigneVide = .Range("A65536").End(xlUp).Row + 1
.Range("A" & ProchaineLigneVide).Value = Sheets("1").Range("A2").Value
.Range("B" & ProchaineLigneVide).Value = Sheets("1").Range("C2").Value
.Range("C" & ProchaineLigneVide).Value = Sheets("1").Range("E2").Value
.Range("D" & ProchaineLigneVide).Value = Sheets("1").Range("E65536").End(xlUp)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2010 à 21:04
Ok, c'est mieux posé.
Et ... quelle est ta difficulté, tu as déjà tout fait, ou presque ?
Tu n'a plus qu'à faire un copier-coller de la dernière ligne et modifier les références !
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2010 à 12:36
Salut Jacky
Pas très clair.
Tu nous parles de référence, de nom de pièce etc, mais dans ton code, aucun commentaire ne nous permet de savoir à quoi correspondent ces cellules que tu manipules.
"je colle vers des cellules qui change" ???
"qd je veux copier l'adresse du fournisseur" : quelle cellule source ?
"je veux la coller dans une cellule fixe du bon de commande" : laquelle ?
Attention :
Sheets("1") désigne une feuille qui porte le nom "1" et ce n'est pas la forcement la première feuille !
S'il s'agit de la première feuille --> Sheets(1)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Jacky1002
Messages postés94Date d'inscriptionmardi 11 mai 2010StatutMembreDernière intervention 3 avril 2011 23 avril 2010 à 14:37
En effet je manque de précision...
pour l'histoire du 1, c'est bien la feuille qui porte le nom "1"
Sur la feuille nommée 1 :
A / B / C / D / E / F
1
2 Désignation / Nom / Reference/
3 Date / Fournisseur/N° tel/ Adresse/Quantité/Prix
4 12-09/Tartempion / XXXX / RUE... / 1243 /42
Sur la feuille nommée "Commande" :
Je veu copier la désignation A2 feuille "1" sous la dernière cellule pleine de la colonne A
Copier le nom C2 feuille "1" sous la dernière cellule pleine de la colonne B
Copier la référence E2 sous la dernière cellule pleine de la colonne C
Tout cela fonctionne bien avec le code (cf post 1)
là ou j'espère que vous pourrais intervenir pour moi c'est maintenant
je veu copier l'adresse (la dernière cellule plein de la colonne D feuille "1" dans la case C4
mais j'aimerais ne pas avoir à changer le code existant (autant que possible) car je débute et mais il est compréhenssible donc plus pour moi a modifier car je vais devoir l'adapter à un grand nombre de page
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 avril 2010 à 15:48
Ok, toujours difficile à comprendre avec tes histoires de cellules pleines et de parenthèses ouvertes jamais fermée ...
En ce basant sur les données affichées dans ta dernière réponse, tu veux faire ça :
Feuille:A2 --> Commande:Ax
Feuille:C2 --> Commande:Bx
Feuille:E2 --> Commande:Cx
où x correspond à la première cellule vide de la colonne A
Ensuite, tu veux copier
"1":Dy --> ??????:C4
où y serait la dernière cellule contenant quelque chose de la colonne D
- La destination est ici la colonne "Dx" alors que tu dis vouloir renseigner la cellule C4
- La source est ici la colonne "Ey" alors que tu dis vouloir prendre l'info dans la cellule D
- La source et la destination sont inversés
--> Il va falloir préciser à quelle feuille appartient C4
--> corrige les lettres ou bien tes explications, parce que là, c'est le flou artistique !
Jacky1002
Messages postés94Date d'inscriptionmardi 11 mai 2010StatutMembreDernière intervention 3 avril 2011 23 avril 2010 à 16:27
Dslé cest vrai que vous navez pas les docs
Mon programme actuel me satisfait mais je veu rajouter qqch.
Je vous explique mon programme actuel
*/Le blabla du début je le comprend pas trop mais qu'importe*/
Sub comande3()
Dim ProchaineLigneVide As Integer
With Sheets("Commande")
ProchaineLigneVide = .Range("A65536").End(xlUp).Row + 1
*/la ligne qui suit menvoie la cellue A2 de la feuille "1" dans la cellule Ay de la feuille "commande"*/
.Range("A" & ProchaineLigneVide).Value = Sheets("1").Range("A2").Value
*/Ici La cellule C2 de la feuille "1" est envoyée dans la cellule By de la feuille "Commande"*/
.Range("B" & ProchaineLigneVide).Value = Sheets("1").Range("C2").Value
*/Ici la cellule E2 de la feuille "1" est envoyer en Cy de la feuille "Commande"*/
.Range("C" & ProchaineLigneVide).Value = Sheets("1").Range("E2").Value
*/Et Ici la cellule Fy (pour cette fois Fy designe la dernière ligne PLEINE et non vide comme précédemment) de la feuille "1" est envoyée en Dy (cellule vide) de la feuille "Commande"*/
.Range("D" & ProchaineLigneVide).Value = Sheets("1").Range("F65536").End(xlUp)
End With
End Sub
Maintenant je voudrais le code a ajouter a celui-ci (pour la macro "comande3()") afin de copier les dernières cellules pleines des colonnes B et D de la feuille "1" respectivement vers les cellules C4 et C5 de la feuille "Commande"
Jacky1002
Messages postés94Date d'inscriptionmardi 11 mai 2010StatutMembreDernière intervention 3 avril 2011 27 avril 2010 à 08:25
sur la recopie de la ligne je devais enlever demière ligne vide et j'enlever en meme tps les " " du coup j'avais Range(D4).Value=sheets.... ou avias la tete...?