Comptabiliser un nombres de plage RÉSOLUE

br44

XLDnaute Impliqué
bonjour le forum ,
(suite du poste précèdent)

Voilà je reviens vers vous pour savoir comme puis-je comptabiliser le nombre de plage crées
sur une même ligne , afin de determiner la longueur de la plage suivantes situé sur la ligne au dessus et le tout ceci sous conditions . Sinon se serait trop simple :p
je souhaiterais savoir comment créer un compteur qui ne s'enclenche que si la valeur de la journée afficher dans le textbox "journée " change pour une valeur supérieur à 1 jusqu'à 7 au maxi
il faudrait compté les plage crée sur la ligne neuf avant le changement de journée pour pouvoir délimiter cette dernière .
exemple : je crée 4 plage de taille variable sur la ligne 9 pour la première journée ( journée .value affiche 1)
puis je passe à la journée suivantes
et la il faudrait que la journée 1 en ligne 8 s'arrête fusionne et s'encadre comme sur la macro précédentes .

il vas de soit que je vous joint un fichier avec les macro et avec le résultat désirer (Voire feuille "Détail fiche client").
en rouge le résultat espérer .
Vous remerciant par avance pour vôtres aide et pour le coup de main .

Espérant également que mon explication soit claire ,mais pas évidentes à expliquer avec des phrase simple
je reste dispo pour toutes question . Amicalement Br 44
 

Pièces jointes

  • teste -forum.xls
    311.5 KB · Affichages: 76

br44

XLDnaute Impliqué
Bonjour Bebere ,

Se petit message pour te tenir au courant de mes avancées .
j'ai réussi a adapter la séquence que tu ma fourni .donc phase 1 terminé

j'ai attaquer la phase 2 et j'ai réussis a faire une macro qui fonctionne mais qui a un petit souci de finalisation .

je t' explique en 2 mots (se qui vas êtres une prouesse pour moi lol)
la copie se fait bien dans la feuil "FCI" voulu mais rien ne s'affiche car j'ai un souci de formats de cellule .

Dans la feuille 2 ( "détail Fiche Client") la ligne 7 qui correspond au N° de la semaine vas de B7 àBE7 .
Hors pour la feuille de destination les cellules fusionnées ne sont pas de la même taille . Il faudrait donc modifier se points pour faire le même principe que l'on a appliqué pour determiner la longueur de la plage Journée .
la différence entrent les 2 c'est que la il faut compter le nombre de journées pour determiner la longueur de la semaine .

J'ai essayer de le faire en me basent sur se tu avait fait mais cela ne fonctionne pas .
j'ai rajouté sur l'userform2 un chekbox2 pour la " fin de la semaine"
j'ai recopier les lignes de code de la chekbox1 pour faire comme toi et j'ai rajouter une macro SE() 'pour Semaine .

une fois cette modification faite je pense qu'il devrais coller la copie correctement .

Voici mon programme . je mets en rouge la ligne de code qui bloque :

Private Sub CommandButton2_Click()
Dim ws As Worksheet
For Each ws In Worksheets
NumClient = Feuil2.[f6].Value
If Left(ws.Name, 3) = "FCI" Then
If Val(Right(ws.Name, Len(NumClient))) = NumClient Then
With Sheets("Feuil2")
If .[b6,F6,j6].Value = "" Then 'Pour la première copie
End If
With Sheets("Détail Fiche Client") 'Repartir d'ici pour les copie suivantes
.[B6:AO122].Copy
With ws.Range("B6")
.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
.PasteSpecial Paste:=xlValues
.PasteSpecial Paste:=xlFormats
.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End With
End With
End With
End If
End If
Next
End Sub

je remet également mon fichier avec l'userfrom2 modifier .
Si tu pouvait me donner le la correction a apporté pour l'userform2 cela me permettrais de voir si tout fonctionne bien .
De plus cela me sera utile du fait que les fiche individuelles sont prévue pour stocké les donnée de la période complete soit 4 semaines . je vais donc maintenant m'atteler a voir comment ont peut insérer un tableau de 8colonnes et 122 lignes après la colonnes BE et cela autan de fois qu'il seras nécessaire
le critère d'insertion devant êtres la taille de la semaine à copier .
il vas de soit que chacune des copies devront repartir de la première colonne vides dans la feuille de destination . Soit a la fin de la plage Semaine .

Voilà mes 2 mot sont finis lol en te remerciant par avance des conseils que tu me donne je te souhaite bonne lecture et surtout si tu as des questions N'hésite pas .

Amicalement Br 44
 

Pièces jointes

  • ESSAIS VALIDATIONV3.xlsm
    865.5 KB · Affichages: 42

Bebere

XLDnaute Barbatruc
bonsoir Br
les feuilles doivent être identique et éviter les cellules fusionnées
les feuilles sont déjà formatées ,copier les valeurs devrait suffire
excel est un tableur
dans les feuilles FCI 1,2,3,etc dans cellules fusionnées
et le code du bouton peut être plus simple
exemple qui fonctionne et donne un mauvais résultat (voir "FCI 2") comme ton code
Code:
Private Sub test()
Dim ws As Worksheet
Sheets("Feuil2").Activate
    Sheets("Feuil2").Range("B6:AO122").Select
    Selection.Copy
  Set ws = Worksheets("FCI " & Feuil2.[F6])
    ws.Select
    Range("B6").Select
    Selection.PasteSpecial Paste:=xlPasteAll ', Operation:=xlNone, SkipBlanks:= _
   '     False, Transpose:=False
   Application.CutCopyMode = False
End Sub
 
Dernière édition:

br44

XLDnaute Impliqué
Merci pour ta rapidité Bebere , je vais donc remettre mon ouvrage sur le billot lot en te remerciant cette réponse . Tu ne doit pas eu avoir le temps de voire pour le souci de la d semaine a moins que se soit trop complexe a faire ?
a bientôt Amicalement Br 44
 

Bebere

XLDnaute Barbatruc
bonjour
br as tu besoin de recopier les colonnes vides
pas compris la demande
un autre code pour transférer des valeurs sans copier/coller
Code:
Sub TransfertValeur()
Dim rng As Range
  Set rng = Sheets("Détail Fiche Client").Range("B6:AO122")
  Worksheets("FCI 1").Range("B6").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value
End Sub
 

br44

XLDnaute Impliqué
Bonjour Berbere ,

pour faire plus simple je t'envoie dans la journée un classeur avec le résulta final que je souhaite avoir avec les options à prévoir au cas où pour que se soit plus claire .

je suis presque arriver a faire la découpage au niveau de la semaine (feuil2 ligne7 ) mais j'ai encore un petit truc qui bloque .enfin tu verras dans le classeur .

en te remerciant de ta patience et de ta compréhension .Amicalement BR 44
 

br44

XLDnaute Impliqué
re bonjour ,

Comme prévu voici le fichier concerné . j'ai mis en feuille 1 les explications pour l'option dont j'ai parlé dans un message précédant .

j'espère que cela seras plus claire pour toi car je n'avais pas pris en compte certain point comme :

le fait de je rentres les infos dans la feuille "détail fiche clients " par journée .
se qui a pour conséquence que la taille de la semaine dépendra du nombre de journée qui sera à copier dans la FCI du clients .

l'option dépendra du nombre et la taille de chaque commande car si ces critères sont trop nombreux le nombre de colonnes ne seras pas suffisants . mais celui ci étant difficile à prévoir je préfère anticiper en cas où .


te remerciant par avance et suis désoler pour le travail que cela vas nous donner en plus mais il vaut que se soit maintenant qu'une fois tout terminer

Amicalement Br44
 

Pièces jointes

  • TESTE.xlsm
    416.9 KB · Affichages: 36

Bebere

XLDnaute Barbatruc
bonjour
Br, voilà une proposition
regarde la feuille FCI 2 pour moi tu n'as besoin que de çà pour commencer
pas de problème pour ajouter vers la droite
dans feuille FCI 1 un 1er copier/coller,pas tester plus loin
edit:dans les 2 feuilles Fci ,ligne cellule B11 vide à supprimer
 

Pièces jointes

  • TESTEV1.xlsm
    374.1 KB · Affichages: 41
Dernière édition:

br44

XLDnaute Impliqué
Bonjour Bebere ,

je reviens vers toi pour un petit souci sur ton programme .

je te rassure la copie se fait bien. Mais quand je reviens sur une feuille destination pour valide une nouvelle journée , la copie prends la place de la précédente au lieu de se mettre à la suite (première colonne vide ) .
si tu pouvait complete où me donné la ligne de code qui me permettrais de faire le décalage au collage apres la première copie . voici la partie du programme concerné si je ne me trompe pas
biensur :
wsDestination.Select
wsDestination.Activate
'pour la première copie c'est ok
Range(adr).Select
Selection.PasteSpecial Paste:=xlPasteAll 'pas de cellules fusionnées,sinon erreur
ColFin = Range("B10").End(xlToRight).Column
Range(Cells(7, ColDebut + 1), Cells(7, ColFin)).HorizontalAlignment = xlCenterAcrossSelection
pour les copie suivante : 'Repartir de la première colonne vide .
Si tu veux le tout je join le fichier pour info .

Te remerciant par avance du coup de pouce
Amicalement BR44
 

Pièces jointes

  • TESTEV1.xlsm
    419.1 KB · Affichages: 40

br44

XLDnaute Impliqué
Bonjour Berbere , le forum ,

je revient vers toi juste pour te dire que je pense avoir trouver où se trouve le souci dans la procédure .
Il s'agit simplement du fait que la première copie se colle à partir en "b10" et que tu la considérer comme première colonne vide si j'ai bien compris alors jusque là
pas de souci . Mais il me faudrait la ligne de code me permettant de mètres les copies
suivantes à la suite . donc du coup la première colonne vide ne sera plus B10 mais une autres colonnes de la lignes 10 . dans la plage des 56 colonnes afficher où plus (a voir pour la suite la meilleur option) .

donc si tu pouvais m'indiquer le procedure pour faire une boucle se serait peut-être plus simple .
une procédure For i pour le collage par exemple :
dim I as bytes
' dertemine la variable i
i= range("B10:BE10")
'Boucle sur l'ensemble de la ligne 10 de la feuille de destination
with WsDestination
for i = 1 to 56
'conditionne le collage si la première colonne de la plage est prise
if Range("B10") ="" then
'determine la première colonne vide de la plage i
ColFin = Range("B10"& i ).End(xlToRight).Column

je ne suis pas du tout certain de la syntaxe n'y même si cette procédure est bonne ,mais c'est juste pour te donne une piste a suivre je vais teste on sait ton jamais si cela peux marcher mais vu la structure de la procédure que tu à mis en place .

te remerciant par avances pour ton aide je te dit a plus . Amicalement Br44
 

br44

XLDnaute Impliqué
Bonjour bebere ,

tout d'abord milles excuse pour ne pas avoir répondu de suite à ton message , je suis pas mal pris par mon taff . en tout cas merci d'avoir répondu .
bon pour revenir sur le souci je croie avoir trouve le souci .
Comme il repartir de la ligne 7 je me suis aperçu que lors du collage de la feuille source dans la feuille destination il y a un décalage entre les 2 .

pour source le n° de la semaine est en D7

alors qu'ils se colle entre les cellules Ad et AE 7 d'où le problème .

je te remet un fichier simplifier avec les deux feuilles concernées et ton code avec une copie des fenêtres de saisies sans avoir teste .
c'est juste pour que tu puisse voir le souci .

Si tu veux donne moi juste la procédure pour rectifier le problème .
Je ne crois pas que se soit sorcier à résoudre mais je ne sais pas comment faire .
Te remerciant par avance pour le coup de pouce et m'excusant de te déranger pour si peux mais j'ai beau réfléchir je ne vois pas où cela bloque .

je te souhaite bonne reception et te dit à bientôt .Amicalement BR44
 

Pièces jointes

  • comparatif 1.xlsx
    70 KB · Affichages: 39

br44

XLDnaute Impliqué
bonsoir Bebere le forum ,

je suppose que tu doit êtres pal mal occuper car je n'est pas eu de réponse de ta part . si tu pouvais juste me dire comment procéder pour que les copie suivante parte de la premières colonne vides à, partir de la ligne 9 .
oui car le souci est que le décalage ne se produit pas lors de la deuxième copie . Actuellement la copie suivante écrasent la copie précédentes .
Merci par avance et mille excuses pour le dérangement . Amicalement Br 44
 

br44

XLDnaute Impliqué
Bonjour Berbere ,le forum

je reviens vers toi car je croie avoir compris où se trouve le souci , il viendrait du fait que saisisses toutes les journées du même clients en 1 seul fois hors se n'est pas le cas la feuille source est effacer après chaque saisi , sauf si il y a plusieurs commandes pour le même clients , puisque je rentre tout les clients de la journées les un a la suite des autres .
le feuille de destination sert donc de lieu de stockage afin d'enregistrée toutes les commandes sur une périodes de 4 semaine avant d'être effacer .

contenu de ces information il est claire que le zone copier commencera en b10 mis devras se coller à la première colonnes vide de la feuille de destination . soit si la commande fait B10:D10 la copie suivante devras se coller en E10 et ainsi de suite .

Je pense qu'il faut juste rajouter un code pour copier de la ligne b8 à la ligne b122 de la feuille source si il s'agit de la suite de la semaine et de coller avec le décalage à partir de la 8 jusqu'à la ligne 122 .

si la case fin de semaine et cocher il faudra revenir au départ c'est à dire copier de la ligne 10 et coller dans la ligne 10 toujours avec le décalage au niveau des colonnes .

en espérant que le fichier joint t'aide à comprendre. se que je souhaite obtenir et si c'est possible bien sur .

Amicalement BR44
 

Pièces jointes

  • comparatif 1.xlsx
    127.7 KB · Affichages: 42

Discussions similaires

Réponses
46
Affichages
844

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16