Aide sur une boucle

br44

XLDnaute Impliqué
Bonjour le forum ,

Voilà mon petit problème . J'ai deux classeurs le premier est mon classeur de facture ("F.xls")le deuxième est mon classeur pour le suivi client("SC.xls").

j'ai une boucle qui copie des informations du classeur("F.xls") vers le classeur("SC.Xls")
les èlèments copier sont simplement:

1-le N° de facture
2-la date de Facture
3-le montantant de la facture

voici la boucle consernèe:

'Déclare le Chemin2 vers "SC.xls"
Dim Chemin2 As String
'Dèclare la variable Wb4
Dim Wb4 As Workbook
'Declare la Variable C
Dim C As String
'Declare la Variable MP
Dim MP As Range
'Declare la Variable R
Dim R As Range



'Dèfinit la varible C
C = Workbooks("F.Xls").Sheets("Détail").Range("G3").Value
'Dèfinit la varible Chemin2
Chemin2 = "C:\RAPID\GESTION\Sc.XLS"
'Dèfinit la varaible Wb4
Set Wb4 = Workbooks.Open(Chemin2)
'Dèfinit la variable MP
Set MP = Workbooks("SC.xls").Sheets(Mois).Range("A4:A" & Range("A65536").End(xlUp).Row)

'Boucle sur la plage R et MP
For Each R In MP
'Défintit la condition de la plage C
If R.Value = C Then
'Définit et envoie les valeures vers le classeur "SC.XLS"
With Wb2.Sheets("Facture")
.Range("C16").Copy
End With
R.Offset(0, 3).PasteSpecial xlPasteValues

With Wb2.Sheets("Facture")
.Range("F12").Copy
End With
R.Offset(0, 4).PasteSpecial xlPasteValues


With Wb2.Sheets("Facture")
.Range("G39").Copy
End With
R.Offset(0, 5).PasteSpecial xlPasteValues
'Sort de la boucle
Exit For
'Fin de Condition
End If
'Sort de la plage p
Next R

Application.CutCopyMode = False
'Enregistre les données du classeur "SC.XLS"
Wb4.Save
'Ferme le Classeur "SC.XLS"
Wb4.Close

On ma demmander de modifier le program pour pouvoire enregistrer des prestations suplèmentaire que certain client ,ses dernierniers dèsire que les nouvelles prestations soit facturèes à parts ,j'ai donc conçu des "annexes factures" pour cela . Mon problème est pouvoir envoyer les èlèments des "annex factures" vers le classeur " Sc.XLS" pour chaque les clients consernès .
Les èlèments à envoyer ètant indentiques à ceux de la facture je les repris pour crèer une macro me permetant de copiers les èlèments consernès, de fusionner et enfin de rèajuster les hauteures de lignes pour garder le formats des cellules .

Voici la macros rajouter:

With Wb2.Sheets("Annexfacture1")
.Range("C16").Copy
End With
R.Offset(1, 3).PasteSpecial xlPasteValues

With Wb2.Sheets("Annexfacture1")
.Range("F12").Copy
End With
R.Offset(1, 4).PasteSpecial xlPasteValues

With Wb2.Sheets("Annexfacture1")
.Range("G38").Copy
End With
R.Offset(1, 5).PasteSpecial xlPasteValues

With Wb2.Sheets("Annexfacture2")
.Range("C16").Copy
End With
R.Offset(2, 3).PasteSpecial xlPasteValues

With Wb2.Sheets("Annexfacture2")
.Range("F12").Copy
End With
R.Offset(2, 4).PasteSpecial xlPasteValues

With Wb2.Sheets("Annexfacture2")
.Range("G38").Copy
End With
R.Offset(2, 5).PasteSpecial xlPasteValues

Range("A16:A18,B16:B18,C16:C18").MergeCells = False
Range("A16:A18,B16:B18,C16:C18").MergeCells = True
Rows("16:18").RowHeight = 14.25

Le problèmes est que je voudrais que la dernière partie ne s'execute que pour les clients consernès ,or dans cette configuration la boucle s'applique à tous .
Ma question est donc :

Est-il possible de modifier la boucle pour quelle prenne en compte la deuxième partie du program que pour mes clients conserès ?

Les rèfèrence des clients consernèes sont:

1- "C18"
2- "C19"

A Noter : je n'ai pas mis le procèdure pour le second clients je l'adderais en fonction des informations qui me sera transmises il me faudrait juste la condition .

Pour l'insertions des lignes supplèmentaires elle se fait automatiquement lors de la validations des "annex factures" .

En espèrant avoir ètè claire (cette fois si) dans mes explications .jeremercie par avance tous ceux qui pourront m'aider à rèsoudre se petit problème .
A bientôt BR 44
 

br44

XLDnaute Impliqué
Re : Aide sur une boucle

re: bonsoir à tous,

Se petit message pour vous dire que j'ai trouvè l'erreure , il manquait un" End With"

avant la sortie de sèlection .

maintenant j'ai une erreure de "type 9"

le code n'appartient pas à la selection

situé au niveau :

With .Sheets("AnnexFacture1" & X)

Voilà c'est tout pour l'instant .

A demain bonne soirée à tout le forum et merçi à tous ceux qui ont participé à se fil
BR44
 

br44

XLDnaute Impliqué
Re : Aide sur une boucle

Re:bonjour le forum,Skoobi ,


Bon d'accord ,mais mois je pensait que le"x" remplacait le "1" de :
With Wb2.Sheets("Annexfacture1")
.Range("C16").Copy
End With
R.Offset(1, 3).PasteSpecial xlPasteValues

D'ou mon ètonnement ?

Si tu pouvait m'expliquer se serait sympas .
Merçi d'avances et à plus sur le fil .
Br44
 

br44

XLDnaute Impliqué
Re : Aide sur une boucle

Re: Rebonsoir Skoobi, le forum,


merçi pour ta rapidité et pour les explications .

J'ai trouver la solution ,il ma suffit de supprimer la variable "X" de la macro est j'ai remis ma formulation de base est sa marche .

En rèsumer il me fallait juste les variables "ClientA" et ClientB pour le selcteCase comme condition .

Je vais donc maitre fin à se poste en remerciant tout ceux qui ont contribuer à rèsoudre se problème .
Je vous dis donc à bientôt sur le forum et une bonne soirèe à tous .
Br44

Ps: Si vous voulez le procèdure definitive sur se fil signaler le par un petit message .
Merçi BR44
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 969
Membres
103 072
dernier inscrit
Remithesix