XL 2010 COLLER SUR LA BONNE LIGNE SOUS CONDITION RESOLUE

br44

XLDnaute Impliqué
Bonjour a toutes et tous ,

et oui je reviens vers vous pour un petit coup de pouce .

voilà j'ai de feuille l'une source et l' autres pour la destination .

je souhaiterais coller la valeur de la cellule B122 de la feuille source en fonction
du n° de client affiché dans la cellule F6 dans la feuille source et dans la plage A7:A44 de la feuille de destination qui est équivalentes à la liste de tout les clients . le collage doit se faire à partir de la colonne C de feuille de destination .

exemple : si f6 affiche 5 alors coller B122 de la feuille source en "C5" de la feuille de destination .

je sais qu'il me faut faire une boucle sur la colonne a de la feuille de destination
mais propriété dois-je employer Bytes où Integer ?

et comme je déclare la variable x de la boucle ?
private Sub Copie()
Dim X as ?
with WSsource
.[b122].copy
end If
X=WsFC.range("A7:A44") ? où ("A7:A").end(Xlup).rown ect...

et pour finir
With WSFC
For x =1 to 38
if X.value= '' then X.value=wsSource[f6].value
.range("C"").pasteSpeciale paste:=XlpasteValue
end if
next X
end with
end sub

pourriez vous me dire sus je suis dans l bonne direction car actuellement même sans la boucle aucun résultat s'affiche dans la feuille de destination . je vous joint un fichier avec les deux feuilles

de plus je voudrais rajouter le condition suivante :
si le cellule H3 de feuille destination est cocher alors le prochain collage devras commencer en colonne "D" soit un décalage vers la droite même si la colonne C contiens des cellules vide .
mais je crois avoir réussi cette ligne de code mais pas pu encore la teste .

P.S la variable WS Destination étant déjà prise .Pour la feuille d'arriver j'ai choisi WSFC comme raccourci de variable .
La macro concerné se trouve dans la feuille "Détail suivi Client" bouton "Validation " dernier bouton de l'userform afficher elle commence par commande button3() et elle est signaler dans la dernier partie
du programme

en vous remerciant par avance de votre coup de main je vous dit a bientôt .Amicalement br4 4
 

Pièces jointes

  • ESSAIS VALIDATIONV3.xlsm
    416.8 KB · Affichages: 39

br44

XLDnaute Impliqué
Bonsoir le forum

merci dg62 pour ta réponse

mais la macro et juste une idée je n'arrive pas à trouver la bonne syntaxe pour faire correspondre le N° de client de la feuille source avec celui qui est afficher dans la feuille destination en colonne a
de manière a coller au bon endroit ;
c'st tout
mais pas facile d 'expliquer
mais merci de vous y intéresser . a bientôt br44
 

Yurperqod

XLDnaute Occasionnel
Bonjour à tous

Moi aussi j'ai du mal avec la manière de fonctionner de ce fichier.
J'ai juste fait cette macro de test pour tester une boucle
Peut-être que cela te fera avancer dans ton projet
VB:
Sub MacroPourTest()
Dim ws As Worksheet, Client, Lignes As String
For Each ws In Worksheets
If ws.Name Like "FC*" Then
Client = 1 * Split(ws.Name)(1)
Lignes = "Nom Client:" & Client & vbCrLf
Lignes = Lignes & "Nom de la feuille: " & ws.Range("B122").Parent.Name & vbCrLf _
& "Valeur de B122: " & ws.Range("B122").Value
MsgBox Lignes, vbInformation
End If
Next
End Sub

Il n'y a pas de feuille nommée: Détail Suivi Client dans ton classeur
Tu veux parler de la feuille Détail Fiche Client ?
 

br44

XLDnaute Impliqué
bonsoir yurperqod , dg62 l, le forum

pour rèpondre a ta question finale yurperqod oui c'est bien "Détail Fiche clients qui est la feuille source et la feuille destination et la feuille ' Fiche client" qui est la toutes première du classeur .

je voudrais juste faire une boucle qui permettrais de retrouver le n°du clients sélectionné dans la cellule F6 de la feuille source dans la colonne A de la feuille destination . une fois trouve il colle la valeur de la cellules B122 sur la ligne correspondante a partir de la colonne C de la feuille de destination .
wsSource F6.value = 6
après recherche
WsFC . A11 = 6 alors affiche
WsSource .B122.value = dans WsFc . C11
c'est juste que je ne sais pas trop comment faire ma boucle sur cette plage en A7 :A44
pour qu'il rechercher le N° de commande automatiquement .

,maintenant ont peut prendre le nom du client si c'est plus simple .

voila si je peux me liberer taux du travaille je vous mettrais un fichier simplifier avec les feuille concerné et le résultat désirer .

en tout cas merci pour vôtres aide a tout les deux . Amicalement Br44
 

br44

XLDnaute Impliqué
bonsoir le forum , yuperqod ,dg 62 ,

Avant d'allez plus loin je tiens à m'excuser pour la grosse erreur que j'ai commise sur se poste et principalement au niveau de ma macro qui je vous l'accord n'est pas en accord avec ma demande .

pour la suite je vais essaye de vous dire les chose simplement

j'ai 2 feuilles l'une où seront enregistre les données
l'autres qui recevra l'information afin de les comptabilisées .

pour cela j'aurais besoin de faire un boucle sur la colonne "A" de la seconde feuille afin de faire corresponde avec la cellule "F6 "
de la première feuille .

se qui donnerai ; si le " 1" apparaît en f6 alors recherche verticalement dans la colonne "A" de la première feuille le "1" une fois trouver procéder à la copie de la cellule "B122" e t coller là a partir de la colonne "C" sur la ligne correspondant au résultat trouve .

SI f6.value =" 1 " feuil1
rechercher le "1 " dans la plage "A7 :A44" feuil2 <= a traduire en vba
ici se sera égal à "A7"
donc résultat
"1" = A7 et donc coller la valeur de B122 en C7

je vous joint un fichier avec les deux feuilles concerné afin que se soit plus claire .

et voici la macro que j'ai rectifier et qu'il faudrait compléter :
Private Sub CommandButton3_Click()
Dim WsDFC As Worksheet
Dim WsFC As Worksheet

Set WsDFC = Sheets("Détail Fiche Client")
Set WsFC = Sheets("Fiche Client")


'macro concerné si dessous
With WsDFC
.Range("B122").Copy
End With
With WsFC
'résultat de la boucle et du collage

' condition pour le changement de colonne avec des cellule vides
*If Me.CheckBox3.Value Then
.[AE7].End(xlToLeft).Offset(0, 1).PasteSpecial Paste:=xlPasteValues

End With
End Sub
* cette condition doit s'appliquer lors du démarrage de la prochaine boucle qui devrait correspondre au début d' une nouvelle journée de saisie .
et ainsi de suite jusqu'à la fin du tableau .

en vous remerciant par avance et m'excusant de mon erreur précédente
je vous dit a bientôt . Amicalement BR44
 

Pièces jointes

  • teste macro 1 .xlsm
    79 KB · Affichages: 22

br44

XLDnaute Impliqué
Bonjour yurperqod ,dg 62 et a tous le forum .
bon je continuer a chercher une solution et je suis parvenue a créer ma boucle .

il faudrait maintenant faire en sorte que la valeur de la cellule " B122" (feuille ("détail fiche client")) se colle sur la ligne trouve par la boucle et a partir de la colonne vide .

soit cette macro à adapter :
With WsDFC
.range("B122").copy
end With
With WsFC
[AD7].End(xlToLeft).Offset(0, 1).PasteSpecial Paste:=xlPasteValues
end With
end sub
qui affiche bien un resultat mais en C7 quelque soit le N° de clients sélectionnés .

la macro ci-dessous et celle de la boucle

Private Sub CommandButton3_Click()
'Déclare la variable "WsSource"
Dim wsSource As Worksheet
'Déclare la variable "WsDéstination"
Dim WsDestination As Worksheet
'Déclare la variable "WsDFC"
Dim WsDFC As Worksheet
'Déclare la variable "WsFC"
Dim WsFC As Worksheet
'Déclarela variable "RPalge" pour la plage de recherche
Dim RPage As Range
'Déclare lavaraible "RCell" pour recheher la cellule
Dim Rcell As Range


'Définit la variable "WsSource"
Set wsSource = Sheets("Détail Sortie Prod")
'Définit la variable "WsDéstination"
Set WsDestination = Sheets("SP")
'Définit la variable "WsWsDFC"
Set WsDFC = Sheets("Détail Fiche Client")
'Définit la variable "WsFCn"
Set WsFC = Sheets("Fiche Client")
'Définit la variable "RPlalge"
Set RPlage = WsFC.Range("A7:A44")
'Définit la variable " Rcell"
Set Rcell = RPlage.Find(WsDFC.Range("F6").Value, , LookIn:=xlValues)
' voici la boucle que j'ai réussi a faire :
If Not Rcell Is Nothing Then
WsFC.Select
Range("A" & Rcell.Row).Select
End If

je vous joint également le fichier pour que se soit plus simple .
vous remerciant par avance je vous dit a bientôt .Amicalement br44
 

Pièces jointes

  • ESSAIS VALIDATIONV3.xlsm
    415.1 KB · Affichages: 17

br44

XLDnaute Impliqué
bonsoir le forum ,
Vu que je n'ai pas eu de réponse sur mon dernier post c'est que je suppose que ma demande n'était pas claire .

donc voici se que je voudrais faire :

1) copier la valeur de la cellules "B122" de la feuille "Détail fiche client"
2) rechercher le n°de client dans la colonne "A" de la feuille "Fiche Client" qui est égal à la cellules "F6" de la feuille "Fiche Détail Client"
3)une fois trouver coller la valeur la cellules copier ("b122") sur même ligne a partir de la première colonne vide .
Voilà se que cela donne

si le n° de client afficher en f6 est égal à " 5 "
valeur de "b122"= "1"

copie "1"
rechercher 5 dans la colonne "A"
le 5 est trouver en "a11"
colle 1 en c11 et ainsi de suite voir le fichier joint
si vous pouviez me traduire cette procédure en VBA c'est tout se que je veux dans un premier temps .

vous remerciant par avance de votre aide et de vôtres patience je vous dit a bientôt . il vas de soit que je suis prêt à répondre toute question qui vous permettrons d'avancer où de comprendre . Amicalement BR44
pour Infos : la macro concerné se trouve dans l'userform 3 au niveau de la commandButton3 en fin de program . Amicalement br44

Ps
 

Pièces jointes

  • ESSAIS VALIDATIONV3.xlsm
    415.8 KB · Affichages: 22

br44

XLDnaute Impliqué
bonjour a toutes et a tous ,

Se petit message pour vous dire que j'ai trouver la solution a mon problème .

Voici ma macro qui fonctionne :

With WsDFC
.Range("B122").Copy
End With
With WsFC
If Not Rcell Is Nothing Then
WsFC.Select
Range("A" & Rcell.Row).Select
Range("A" & Rcell.Row).End(xlToRight).Offset(0, 1).PasteSpecial Paste:=xlPasteValues
End If
End With
je remercie tous ceux qui ont pris le temps de lire se poste et un merci supplémentaire a ceux qui mon aider par leur conseil . Amicalement Br 44
 

br44

XLDnaute Impliqué
re bonjour à toutes et à tous

bon maintenant que je réussi a faire cette macro il ne reste plus qu'à la terminée en n'y incluant une dernière partie ,dont voici le schéma .
Si la cellule I3 de la feuille("Fiche Client") est cochet
alors une fois la macro exécuter compte les cellules vides de la colonne concerné et affiche "0" dedans toutes les cellules vide
puis efface la cellule I3 .

J'ai réussi de le faire sur 1 cellules en écrivant se ceci à l'intérieur
=SI(NB.VIDE(C7:C44);0;) traduction en vba trouve sur un forum

Nb.vide = ApplicationWorksheetsCuntion.CoutBlanck (plage)
mais je ne voie pas comment écrire la suite .

cette partie a pour but d'arrêté la journée et de pouvoir redémarré la macro sur la première colonne vide .

Vous remerciant par avance je vous dit a bientôt . Amicalement Br44
PS : cette partie de programme et a rajouter dans la macro éditer dans dernier message .
 

Discussions similaires

Réponses
2
Affichages
112

Statistiques des forums

Discussions
312 160
Messages
2 085 838
Membres
103 000
dernier inscrit
Nath13