VBA ? détecter le nombre de degerbages pour chaque chargement

Ludovic56

XLDnaute Nouveau
Bonjour ça fait plusieurs jours que je suis sur un problème
Je souhaite faire une analyse du nombre de palettes à dégerber dans un camion.
Je vous explique le fonctionnement pour que vous puissiez bien comprendre mon besoin.
Il y a plusieurs palettes de marchandises dans un camion. Elles sont composées d’un seul ensemble de produits différenciés par des codes : 450A 125B etc.

Une palette de produits 450A peut-être gerber sur une palette contenant un autre produit etc. (du 450A sur du 125B ou autres, mais aussi du 450A sur du 450A et dans ce cas-là nous n’avons pas à dégerber).

Je peux extraire le chargement d’un camion comme vous pouvez voir sur le fichier nomé: fichier type extraction + macro + test
je vous joind ici 2 fichiers le premier nommé:[B] fichier de tests de calculs [/B]
Ce fichier est composé de deux onglets
le premier nomé : fichier Victor qui fonctionne. Il nous permet d'obtenir le nombre de degerbage total à effectuer dans un camion ainsi que le nombre de degerbage à effectuer par emplacement dans un seul camion.

mon problème est que je n'arrive pas à reproduire ce fichier comme vous pouvez le voir dans l'onglet nomé :erreurs

Il y a un ecart du nombre de degerbages total. Je n'arrive pas à reproduire la formule de Victor qui permet d'afficher le nombre de degerbage à effectuer par emplacements

par la suite nous arrivons au 2 ème fichier : fichier type extraction + macro + test
Ce fichier est composé de deux onglets :
le premier nommé: extraction de base , il correspond aux données étudiées. j'ai ajouter 2 macro
la 1ère pour supprimer les emplacements vides, (ils ne sont pas renseigner pour plusieurs raison, nous ne pouvons dont pas les traiter donc on supprime).
la seconde macro permet de concatener : le transporteur/l'heurre d'arrivée/ la tournée / et l'emplacement comme fait au par avant dans le fichier :[B] fichier de tests de calculs [/B]

je voudrais pouvoir reproduire ce que l'on a fait dans ce fichier (fichier tests) sur le fichier principal (fichier type extraction + macro + test) pour chaque camion réceptionné dans la journée.

Je voudrais que ce nombre de dégerbage soit donné automatiquement. On aurait juste à ajouter les données obtenu dans l'extraction du « bordereau de chargement » et on me donnerait le nombre de dégerbage total par camion et par emplacement dans chaque camion si on le souhaite.

Je suis donc sur ce problèmes depuis plusieurs jours, je sais utiliser Excel pour des choses simple, mais la je ne connais pas les fonctions qui peuvent me permettre de résoudre ce problème et je ne les trouves pas.

Une fois ce problème résolu je voudrais aussi ajouter le nombre de dégerbages à effectuer si on travaille par zone et non par produits.
ce que je veux dire ici:
Si j’ai 3 produits différents qui vont sur la même zone nous n’effectuerons pas de dégerbage. c'est pour cela que vous trouverez les zones et les quais d'expéditions sur le fichier.

J’ai besoin d’étudier les deux infos, mais je pense que si j’arrive pour le gerbage j’y arriverais pour les zones. Donc déjà je travaille sur les dégerbages total comme expliqué au début.


je vous remercie d'avance, pour toute les idées que vous pourrez me donner,
je peut aussi vous fournir le fichier sur lequel je travail.
 

Pièces jointes

  • VERSION 1 - Copie.xlsx
    25.9 KB · Affichages: 36
  • VERSION 1.xlsx
    46.2 KB · Affichages: 33
  • VERSION 1.xlsx
    46.2 KB · Affichages: 39
  • VERSION 1.xlsx
    46.2 KB · Affichages: 33
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : séparateur automatique dans un tableau et trouver des différences.

Bonjour à tous

comment faire pour que le bouton ne se supprime pas, car il supprime les lignes vides et s'il est lui-même sur une ligne ou la colonne D est vide le bouton disparaît....
Faire clic-droit sur le bouton -> Format de contrôle -> Propriétés puis cocher
Ne pas déplacer ou dimensionner avec les cellules


[highlight]EDITION: Bonjour Victor21[/code]
 
Dernière édition:

Ludovic56

XLDnaute Nouveau
Re : séparateur automatique dans un tableau et trouver des différences.

bonjour à tous,
tout d'abord merci pour votre aide, j'avance petit à petit
c'est bon les boutons concaténer et supprimer ne se supprime plus quand je supprime les lignes vides

j'ai modifié le code et mis : For i = derligne To 5 Step -1 'pour que le code ne s'effectue qu'à partir de la 5 ème ligne cela fonctionne très bien
par contre j'ai essayé de faire pareil avec la fonction Concatener mais je n'ai pas réussi ... voici les codes

fonction supprimerSub Effacer()
Dim i As Integer
Dim derligne As Integer

derligne = Range("a" & Range("a:a").Rows.Count).End(xlUp).Row

For i = derligne To 5 Step -1 'pour commencer à la ligne 5
If Cells(i, 4).Value <= 0 Then 'colonne D = 4 value <= 0 supprime les cellules vide il y a peut être une autre appélation ?
Cells(i, 4).EntireRow.Delete
End If

Next i


End Sub


maintenant pour le bouton qui sert a effectuer la concatenisation Sub Bouton3_Cliquer()
'
' Bouton3_Cliquer Macro
'
Dim i As Integer
Dim derligne As Integer

derligne = Range("a" & Range("a:a").Rows.Count).End(xlUp).Row
i = derligne
'For i = derligne 'To 5 Step -1 'pour commencer à la ligne 5 j'ai essayer plusieurs possibilités et je n'ai pas réussit ...
Range("L1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-11],RC[-6],RC[-9],RC[-8])"
Range("L1").Select
Selection.AutoFill Destination:=Range("L1:L20000")
'Range("J1:J2).Select

'Next i 'ajout
End Sub


Victor21, dans le nouveau fichier test4 avec macro que j'ai intégré dans ma question de départ, j'ai essayé de reproduire ce que vous avez fait pour le nombre de dégerbage total dans le camion, cependant je ne trouve pas le bon nombre et je ne comprend pas pourquoi, car ca semble marcher a un chiffre près sur mon autre classeur excel...

pour ce qui est de l'affichage du nombre de dégerbages par emplacements je n'arrive pas à reproduire votre code.
Je pense que cela vient de ce bout de formule LIGNES($1: 1). Je ne sais pas à quoi ça correspond ?

J'essaye de trouver une solution pour pouvoir effectuer ce travail pour tous les camions réceptionnés dans la journée.
je ne sais pas vraiment comment procéder.
partir de mon tableau croiser dynamique et créer une macro qui crérait un onglet pour chaque camion arriver (cela est-il possible?).
Créer une macro qui me permettrait de séparer chaque camion ?
utiliser le même raisonnement que votre code qui permet d'afficher le nombre de dégerbage par emplacement ?


merci d'avance

Cordialement
Ludovic
 

Victor21

XLDnaute Barbatruc
Re : séparateur automatique dans un tableau et trouver des différences.

Bonjour, Ludovic.

Non spécialiste-loin s'en faut- du VBA, je préfère passer la main à plus compétent que moi, et ils sont nombreux ici :)

LIGNES($1: 1)
recopié vers le bas vous renvoie simplement 1, puis 2, puis 3 ...(Nombre de lignes de la zone)
puisqu'aux lignes suivantes, le $ figeant la première référence, la formule devient LIGNES($1: 2), puis LIGNES($1: 3)...
 

Ludovic56

XLDnaute Nouveau
Re : séparateur automatique dans un tableau et trouver des différences.

et donc on peut aller jusqu'à 33 dans mon cas. cela fonctionne et s'incrémente mais le reste ne fonctionne pas et je ne trouve pas pourquoi.
le fichier sur lequel vous avez travaillé ce composait comme cela

2015-05-18 12_01_14-Ludovic56 - Excel.jpg

avec comme formule pour trouver le nombre de dégerbage :

SOMMEPROD(1/NB.SI(M42:M60;M42:M60))-SOMMEPROD(1/NB.SI(C42:C60;C42:C60))

M étant la colonne Concatener et C l'emplacement de réception palette.
si je travail sur le même fichier excel dans d'autre onglets cela fonctionne il arrive bien a différencier sur un emplacement le nombre de dégerbage si j'ai sur un emplacement ABCABA il me mettra bien 2 dégerbages (je veux qu'il voie AAABBCC donc 2 degerbage) et cela fonctionne. (même sur un fichié que j'ai reproduit).

par contre sur mon nouveau fichier ça na fonctionne plus, ça ne me donne pas le bon nombre de dégerbage pour la même fonction utilisé (dans l'onglet teste 1 camion 1 heure du ficher tes4).



Je pense que le titre que j'ai choisi n'est pas, ou plus adapté à mon problème. Je devrais peut être fermer ce poste et en créer un autre plus adapté ?

Savez vous pourquoi je ne trouve pas bon nombre de dégerbage par contre ?
 

Victor21

XLDnaute Barbatruc
Re : séparateur automatique dans un tableau et trouver des différences.

Re,

Vous avez la possibilité d'éditer le premier post pour modifier le titre du fil ("Déloter un ou plusieurs chargements" par exemple).
Dans votre prochain post, joignez le fichier sur lequel vous faites des essais, et notez-y, en face des résultats erronés, les résultats souhaités (et l'explication de ces résultats). Cela nous permettra d'y voir plus clair :)
 

Ludovic56

XLDnaute Nouveau
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

Titre du sujet et explication de ma problématique modifiée.
Suppression des anciens fichiers, remplacer par les nouveaux que j'ai commentés pour faciliter la compréhension de mon problème.
 

Victor21

XLDnaute Barbatruc
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

Re, Ludovic56.

Feuille "erreur" du "fichier de test de calculs" :
Je ne m'explique pas pourquoi, sur tous les emplacements (Colonne F, notée H par vous ?) il y a autant de dégerbage que de produits -1, sauf pour l'emplacement 7 qui contient un seul produit R).
Je me pose également la question concernant l'emplacement 6 (Produit A, puis E, puis A) Attendez-vous 1 ou 2 dégerbages?
Si c'est 2, j'avoue mon incompétence:(

La valeur d'erreur en colonne N, elle, provient très certainement de la suppression de la 1° ligne de votre fichier, et la formule matricielle en N10 (et suivantes), qui commençait par : =SI(LIGNES($1:1)... a été remplacée lors de cette suppression par : =SI(LIGNES(#REF!)...
Une combine pour ce cas : plutôt que de supprimer les lignes du dessus, sélectionnez tout votre tableau, et déplacez-le à l'aide de la poignée de recopie : Vous préserverez vos formules.
 

Ludovic56

XLDnaute Nouveau
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

bonjour,
Vous avez raison, je suis allé trop vite hier, il n'y a pas d'erreur pour l'emplacement 7 (aucun dégerbage à effectuer).
Mais alors pourquoi sur le fichier : fichier type extraction plus macro la formule ne fonctionne pas pour l'onglet teste 1 camion 1 heure ...

pour ce qui est de la formule SI(LIGNES($11:)... remplacer par =SI(LIGNES(#REF!)...
même en remplacement (#REF!) par ($1$1) ça ne fonctionne pas.

je pourrais bien evidement sélectionner tout votre tableau et le déplacer à l'aide de la poignée de recopie : afin de préserverer les formules.

mais j'ai ensuite pour but de créer un autre fichier excel, qui me permettra d'importer les données et tout automatiser.
(je vais pouvoir faire une extraction en HTML que je vais convertir sur excel).

J'éspère avoir le temps de travailler sur cette extraction dans la journée, cela va aussi nous permetre de simplifier les calcules, puisque je vais ajouter un code unique par camion (simplification de la concatenisation).

j'essaye de vous poster ça ce soir ou demain.

merci encore et désolé pour cette erreur sur le fichier: fichier de test de calculs
 

Victor21

XLDnaute Barbatruc
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

Mais alors pourquoi sur le fichier : fichier type extraction plus macro la formule ne fonctionne pas pour l'onglet teste 1 camion 1 heure ...

pour ce qui est de la formule SI(LIGNES($11:)... remplacer par =SI(LIGNES(#REF!)...
même en remplacement (#REF!) par ($1$1) ça ne fonctionne pas.

En R3, validation matricielle (Ctrl + Maj + Entrée) vous avez mis :
=SI(LIGNES(#REF!)<=SOMME(1/NB.SI($E$3:$G$27;$E$3:$G$27));INDEX($E$3:$G$27;EQUIV(MIN(SI(NB.SI(R2:R$41;$E$3:$G$27)=0;NB.SI($E$3:$G$27;"<"&$G$42:$G$60)));NB.SI($E$3:$G$27;"<"&$E$3:$G$27);0));"")
au lieu de :
=SI(LIGNES($1:1)<=SOMME(1/NB.SI($E$3:$E$27;$E$3:$E$27));INDEX($E$3:$E$27;EQUIV(MIN(SI(NB.SI(R2:R$2;$E$3:$E$27)=0;NB.SI($E$3:$E$27;"<"&$E$3:$E$27)));NB.SI($E$3:$E$27;"<"&$E$3:$E$27);0));"")
Forcément, ça marche moins bien ;)

De même en S3 :
=SI(R7<>"";SOMMEPROD(1/NB.SI($M$3:$M$27;$M$3:$M$27)*($E$3:$E$27=R7))-1;"")
 

Ludovic56

XLDnaute Nouveau
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

bonjour;
j'ai réussi à retranscrire mon extraction en HTML sur excel, cela correspond au tableau que vous avez sur le fichier VERSION 1[/B] et à l'onglet: Extraction plusieurs camions.

Ainsi à chaque fois que je cliquerais sur le bouton importé (qui ne se trouve pas dans ce fichier) le tableau arrivera sur cette feuille excel et la suite des calculs arriveront automatiquement.

le calcule du nombre de dégerbage pour un camion fonctionne très bien

j'ai enfin réussi à reproduire votre formule pour le nombre de dégerbage à effectuer par emplacement. Cependant il y a des emplacements qui ne sont pas vu. un bel exemple dans l'onglet camion 904031057 du fichier : VERSION 1
je vous ai mis ensuite un onglet nommé exemple ce que je voudrais pour vous montrer ce que j'aimerais obtenir afin d'avoir l'intégralité des informations pour chaque camion de la journée.

suite à cela j'ai commencé à travailler sur un fichier, nommé VERSION 1 copie vous connaissez peut-être une autre façon d'obtenir l'intégralité des informations pour chaque camion de la journée mais n'y arrivant pas par j essayez en "bidouillant"

pour différencier chaque camion j'ai utilisé 2 petites formules la 1ère qui compare le code camion avec la ligne du dessus
=SI(G4=G3;0;1) donc, si le code camion est identique on met 0 sinon on met 1. ensuite
=SI(T3=1; G3;"") si c'est = 1 alors on affiche le code camion. du coup j'ai tous les codes camion qui apparaisse une seule fois.

maintenant je voudrais ajouter votre formule en fonction des codes camion
=SOMMEPROD(1/NB. SI(Y3: Y77; Y3: Y77))- SOMMEPROD(1/NB. SI(P3: P77; P3: P77))
mais au lieu de mettre Y3: Y77; Y3: Y77 je voudrais mettre les Y qui correspondent au code camion souhaité
ça ferrait quelque chose comme cela =SOMMEPROD(1/NB. SI(des Y: Y correspondant à ce code camion))- SOMMEPROD(1/NB. SI(des P correspondant à ce code camion)) quand je dis ce code camion, c'est le code camion de la cellule d'en face.

cela me permettrait d'obtenir le nombre de dégerbage total pour chaque camion je pourrais reproduire ce raisonnement pour le nombre de dégerbage à effectuer par emplacement.

récapitulatif de mes besoins
2 questions
comment résoudre le problème des emplacements non vu par pour le tableau nombre de dégerbages à effectuer par emplacement.

comment faire pour que la formule =SOMMEPROD(1/NB? SI(Y3: Y77; Y3: Y77))- SOMMEPROD(1/NB. SI(P3: P77; P3: P77)) ne prend en compte seulement les cellules correspondant au code camion choisi ...

en espérant avoir été claire,

cordialement
Ludovic
 

Victor21

XLDnaute Barbatruc
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

Bonjour, Ludovic56.

Devant l'évolution et la complexité croissante de votre demande, je vais devoir cesser mon aide.

Attention : la modification des fichiers du post 1 ne permet pas de suivre votre demande, et risque de dissuader un éventuel intervenant étranger.

Je vous conseille d'ouvrir un nouveau fil pour chaque nouvelle question avec un court fichier représentatif : situation de base, conditions à respecter, situation souhaitée à l'arrivée), et d'ajouter à vos réponses, si nécessaire, un fichier actualisé au fur et à mesure de l'avancement.
Je vous souhaite l'entière réussite dans votre projet.

PS : êtes-vous allé voir Lien supprimé ?
 

Ludovic56

XLDnaute Nouveau
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

bonjour , normalement les fichiers fonctionnent.
je vais reffaire un poste pour chacune de mes questions


je vous tiendrais au courrant quand j'aurais finit, je pense que ca pourra vous interesser.

merci de votre aide

je pense que je ne suis pas loin du but


Cordialement

Ludovic
 

Ludovic56

XLDnaute Nouveau
Re : VBA ? détecter le nombre de degerbages pour chaque chargement

bonjour,
comment fermer cette discution ?


si voue etes intéréssé par ce type de probleme je vous conseil de vous rendre ici sur la discution :

disparition des "" lors de l'exécution du code VBA ch(34)


cordialement Ludovic
 

Discussions similaires

Statistiques des forums

Discussions
298 015
Messages
1 965 154
Membres
200 864
dernier inscrit
b.sami