[Déplacé .Net --> VBA] coiper coller cellule

Résolu
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 avril 2011 - 23 avril 2010 à 10:28
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Derniè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)

End With
End Sub

Merci d'avance.
Jacky

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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 !
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Derniè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

merci d'avance
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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

Et voilà ce que tu as écrit :
.Range("D" & ProchaineLigneVide).Value = Sheets("1").Range("E65536").End(xlUp)
- 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 !

A tout hasard, ta ligne devrait être
Sheets("1").Range("D65536").End(xlUp) = .Range("C4").Value


La prochaine fois, essaye d'être plus précis : on n'a pas tes documents sous les yeux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Derniè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"

En espérant etre clair cette fois ci

Merci
0
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 avril 2011
23 avril 2010 à 16:30
dslé cest vrai que je m'étais un peu embrouillé. ne tien pas compte des messages précédents

sorry
0
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Derniè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...?
0
Jacky1002 Messages postés 94 Date d'inscription mardi 11 mai 2010 Statut Membre Dernière intervention 3 avril 2011
27 avril 2010 à 08:25
merci de m'avoir ouvert les yeux

@une prochaine pour me depanner pcq dans lautre sens je ne te serais pas d'une grande utilité.

Merci
0
Rejoignez-nous