Décalage de plage

br44

XLDnaute Impliqué
Bonjour le forum ,

Comme prévue me revoici avec mon petit problème . Je voudrais savoir si il est possible de décaler l'affichage dans un tableau des textbox issus d'un USF en fonction de la couleur d'une cellule où d'une plage de celllules ?

je vous explique le contexte:

J'ai un tableau qui me permet de gérer les factures impayées de l'année précedante . se tableau se divise en 2 parties de la maniére suivante:

1) les n°de factures et leurs montants (8 colonnes)
2) le détail encaissement (7colonnes )

Se tableau est alimanté une fois par an à la fin de l'année ,par un autre tableau pour la première partie . la seconde est compléte par des texbox situé dans un USF pour la saisie des infos (N° de Chéque ,Montant, Date ,ect...)

Je valide le paiement grace à des boutons à bascule qui change la couleur du montant de la facture dans l'USF et apparait dans le tableau aprés validation .

Se que je souhaitrais c'est que l'affichage se produisent dans les partie encaisement correspant au changement de couleur effectuer .

Pour vous aider je joint un fichier avec la procedure de l'userform et es infos complémentaire pour mieux comprendre le problème .

Vous remerciant tous par avance et espérant être claire dans ma demande je vous dit à bientôt sur se fil . Je reste disponible pour toutes infos supplèmentaire qui vous serez utiles .

Amicalement BR 44
 

Pièces jointes

  • RECAP .f.zip
    29.1 KB · Affichages: 28

Papou-net

XLDnaute Barbatruc
Re : Décalage de plage

Bonsoir br44,

Comme on se retrouve : je reconnais ton sujet avec plaisir.

Si j'ai bien compris ton soucis, je te propose de modifier ton code comme ci-après :

- Lignes en bleu à ajouter

- Texte en rouge à corriger

Code:
Private Sub CommandButton4_Click() 'Bouton "VALIDATION FACTURES IMPAYEES"
Dim cfact

'Je recherche la dernière ligne de la colonne "A" (NomClient)
Lig = CLng(NomClient.List(NomClient.ListIndex, (NomClient.ColumnCount - 1)))
'Je Selectionne la feuille du classeur consernée
 With Sheets("Feuil1")
'Pour le Nom des clients
If NomClient.Value = "" Then Exit Sub
[COLOR="RoyalBlue"][B]' Recherche la colonne correspondante au n° de facture
Set cfact = .Range(Lig & ":" & Lig).Find(NFacture1, LookIn:=xlValues, lookat:=xlWhole)
cfact = cfact.Column[/B][/COLOR]
'Je rentre les données dans le tableau
 'Pour les N° de Chèques où de virement
    [COLOR="Red"].Cells(Lig, cfact + 9)[/COLOR].Value = NCheque.Value
    [COLOR="Red"].Cells(Lig, cfact + 10)[/COLOR].Value = NVirement.Value
 'Pour le Montant des Chéques où de virement
  If Montant.Value <> "" Then .Cells(Lig, cfact + 8).Value = CCur(Montant.Value)
 'Je mets au format les TextBox
     Montant.Value = Format(Montant, "#,##0.00 €")
 'Pour la date des Chéques où de virement
    [COLOR="Red"].Cells(Lig, cfact + 11)[/COLOR].Value = Date1.Value
 'Pour la date de Saisie
    [COLOR="Red"].Cells(Lig, cfact + 12)[/COLOR].Value = DateSaisie.Value
 'Pour la Banque
    [COLOR="Red"].Cells(Lig, cfact + 13)[/COLOR].Value = Banque.Value
'Pour le N° de bordereau
    [COLOR="Red"].Cells(Lig, cfact + 14)[/COLOR].Value = Nbordereau.Value
 'Je quitte le feuille sélectionnée
End With
...
...

Enfin, ceci marche pour le cas du règlement d'une seule facture. S'il y a plusieurs factures, il faudrait sûrement prévoir une boucle. J'y réfléchis.

Cordialement.
 

br44

XLDnaute Impliqué
Re : Décalage de plage

Bonjour Papou-net ,le forum

Toujour beaucoup de plaisir à te retrouver ègalement ,et un grand merci pour cette réponse rapide je fais les corrections et je test pour voir le résultat .


Je te remercie ègalement par avance pour le suite de ta réflexion et si j'ai une idée je te le dit aussitôt .

A plus br44
 

br44

XLDnaute Impliqué
Re : Décalage de plage

Rebonjour à tous,

De nouveau un grand merci à toi pour cette solution qui fonctionne pour les deux premiers exemples.

Si j'ai bien compris ta macro elle décale les cellules en fonction du N° de facture selectionée . Mais je n'est pas trop compris la variable suivante :

Set cfact = .Range(Lig & ":" & Lig).Find(NFacture1, LookIn:=xlValues, lookat:=xlWhole)
cfact = cfact.Column

Si tu pouvait me donné l'explication cela me permettrais de compre et de la réutiliser en cas de besoin .

Te remerciant par avance je te dit à bientôt .Amicalement BR44
 

Papou-net

XLDnaute Barbatruc
Re : Décalage de plage

Rebonjour à tous,

De nouveau un grand merci à toi pour cette solution qui fonctionne pour les deux premiers exemples.

Si j'ai bien compris ta macro elle décale les cellules en fonction du N° de facture selectionée . Mais je n'est pas trop compris la variable suivante :

Set cfact = .Range(Lig & ":" & Lig).Find(NFacture1, LookIn:=xlValues, lookat:=xlWhole)
cfact = cfact.Column

Si tu pouvait me donné l'explication cela me permettrais de compre et de la réutiliser en cas de besoin .

Te remerciant par avance je te dit à bientôt .Amicalement BR44

Bonsoir br44,

C'est simple : l'instruction Find recherche la référence de la facture NFacture1 dans la plage de cellules de la ligne correspondant au nom du client .Range(Lig & ":" & Lig). La syntaxe de cette instruction n'est pas d'une logique évidente, la consultation de l'aide VBA t'apportera las précisions nécessaires.
La variable cfact, que j'ai nommée ainsi : c pour colonne et fact pour facture, récupère donc la cellule qui contient la référence de la facture cherchée. Il ne reste plus qu'à lui affecter le n° de colonne de la cellule trouvée : cfact = cfact.Column

Pour être plus explicite, j'aurais pu exprimer ces 2 lignes d'une autre manière :

Code:
Set fact = .Range(Lig & ":" & Lig).Find(NFacture1, LookIn:=xlValues, lookat:=xlWhole)
cfact = fact.Column

Pour le décalage des cellules, tu as effectivement bien compris.

Espérant avoir été clair dans mes explications.

Cordialement, et non moins amicalement.
 

br44

XLDnaute Impliqué
Re : Décalage de plage

Bonjour Paou-net ,le Forum ,

Un grand merci pour cette réponse . de mon coté j'ai du nouveau ,mais pas le temps aujour'dhui je te tient au courant demain . A plus et merci pour tout .Amicalement BR44
 

br44

XLDnaute Impliqué
Re : Décalage de plage

Bonjour Papou-net,le forum

Comme prévu je revient vers toi pour te donner la procédure pour l'exemple 3 .

J'ai remis le tableau à zéro pour faire l'essai (tout les montants en rouge,et effacer les parties "Détail encaissement" déja occupé,ainssi que les montant encaissés à 0 )

Je me suis basé sur "Maxou" comme exemple

1) tu remplie les infos des textBox le montant total pour maxou s'èlève à 3281,00€
2) Sélectionne les N° de factures de Janvier pour chaques type c'est à dire :
pour le type facture :le 2
pour l'annexFacture1 :le 1001
pour L'annexFacure2 : le 2001
pour La Factur Unique le 3001
3) tu passe les montants en payé
4) tu valide sans enregistrer
5) tu fais la même chose pour février toujour sans enregistrer
6) tu fais la même pour Mars et là tu enregistre et tu ferme l'userforme

Le résultat qui s'affichera dans le tableau pour les trois mois devra être le suivant

Montant encaissé: 3281€
N° de chéque: 1
N° de virement: vide
Date du chéque : 26/03/2010
Date de saisie : 04/05/2010
Banque :CA
N° de borderau :1

Tu constateras ègalement qu' au niveau des montants encaissés que tu as les sommes dètailées pour chaque mois.

pour le reste pas la peine de se prendre la tête .

je te remercie pour ton aide et pour les explications que tu ma données .

Si tu fais un teste confirme mois que cela à fonctionner comme prévu ,avec un grand merci d'avance . Amicalement BR44
 

br44

XLDnaute Impliqué
Re : Décalage de plage

Bonjour Papou-net, le forum,

Je te prie de m'excuser pour le fichier ,mais je croyais que tu avait celui que j'ai mis sur le fil et que tu avais travailler dessus .

J' ai modifier ma macro par raport au infos que tu a mis sur se fil .

Je te joint la nouvelle version avec ta macro.

En m'excusant de nouveau pour le contre-temps ,a bientôt .Amicalement BR44
 

Pièces jointes

  • RECAP.zip
    30.7 KB · Affichages: 26
  • RECAP.zip
    30.7 KB · Affichages: 23
  • RECAP.zip
    30.7 KB · Affichages: 25

Papou-net

XLDnaute Barbatruc
Re : Décalage de plage

Rebonjour br44,

Pas de problème, ça a fonctionné parfaitement chez moi aussi.

Je pense donc que ton problème est résolu.

Je reste à ton écoute pour toute autre question éventuelle.

A bientôt, peut-être ?

Amicalement.

Papou
 

Discussions similaires

Statistiques des forums

Discussions
312 758
Messages
2 091 783
Membres
105 073
dernier inscrit
liMiteddddd