Tableau a remplir automatiquement

Tu te plains de résultat qui sont l’émergence de ce que tu as codifié même dans les commentaires :

'ligne colonne A = emballage et colonne d = Z600
If Sheets(« ORDO VIERGE »).Cells(i, 2) = « EMBALLAGE » Then
If Sheets(« ORDO VIERGE »).Cells(i, 4) = « Z600 » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If
End if

'ligne colonne A = emballage et colonne d = Z600

Le code a bien fonctionné car c’est ce que tu souhaites remonter EMBALLAGE colonne A associé à Z600 colonne D c’est écrit

Il faut m’expliquer ce qui ne vas pas

Si tu souhaites remonter toutes les données colonne A EMBALLAGE sauf celles qui ont en colonne D la donnée Z600 il faut écrire comme ceci :

'ligne colonne A = emballage et colonne d <> Z600
If Sheets(« ORDO VIERGE »).Cells(i, 2) = « EMBALLAGE » Then
If Sheets(« ORDO VIERGE »).Cells(i, 4) <> « Z600 » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If
End if

Ainsi tu remonteras avec cette partie toutes les données qui en colonne A ont EMBALLAGE et qui n’ont pas en colonne D le paramètre Z600

Parcontre pour être complet puisque cette partie traite les cellules colonne A qui ont la donnée EMBALLAGE d’exclure leur traitement dans la partie suivante sinon elle les fera remonter

Ici :

If Sheets(« ORDO VIERGE »).Cells(i, 2) <> « CUISINE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « DOSAGE » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If

et de mettre impérativement comme ceci :

If Sheets(« ORDO VIERGE »).Cells(i, 2) <> « CUISINE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « DOSAGE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « EMBALLAGE » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If

Il faut que les données colonne A EMBALLAGE ne soient traitées que par la 2° partie et pas par cette dernière partie

Corriges et dis moi

J’ai corrigé comme cela :


toujours pas le resultat attendu .
il y a peut-etre un chemin plus rapide en stipulant que en A :je ne souhaite que « EMBALLAGE » en en D ne conserver que « Z101 »
Franck.

Bonjour
Si tu souhaites ceci :
« il y a peut-etre un chemin plus rapide en stipulant que en A :je ne souhaite que « EMBALLAGE » en en D ne conserver que « Z101 » »
Mets cette partie :

'ligne colonne A = emballage et colonne d <> Z600
If Sheets(« ORDO VIERGE »).Cells(i, 2) = « EMBALLAGE » Then
If Sheets(« ORDO VIERGE »).Cells(i, 4) <> « Z600 » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If
End if

Comme ceci :

'ligne colonne A = emballage et colonne d = Z101
If Sheets(« ORDO VIERGE »).Cells(i, 2) = « EMBALLAGE » Then
If Sheets(« ORDO VIERGE »).Cells(i, 4) = « Z101 » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If
End if

Corriges testes et dis moi

Bonjour FFO et encore désolé de te prendre autant de temps ,je te remercie pour cela .
J’ai testé (j’avais deja essayé hier soir ) cela ne fonctionne pas !!
je ne comprend pas car la consigne est simple :ne selectioner que emballage et que Z101.
je te renvois le tableau complet .
merci pour tout et bon dimanche .
ici en bretagne c’est couvert donc on reste au chaud !!
FranckPlanning deballage 2021-2.xlsm (75,4 Ko)

Après analyse de ton fichier
Onglet source « ORDO VIERGE » colonne B je n’ai que les données :

CUISINE
DOSAGE
EMBALLAGE

Dans la dernière partie de ton code tu veux récupérer de cette colonne que les donnée qui ne sont pas

CUISINE
DOSAGE
et
EMBALLAGE car cette donnée est traitée par la partie précédente

Donc au final cette partie ne sert à rien car exclue toutes les possibilités de la colonne B :

CUISINE
DOSAGE
EMBALLAGE

Je l’ai maintenue mais si il n’y a pas d’autre donnée potentielle tu peux t’en dispenser elle n’aura aucune remontée possible

Je t’avais bien signifié de rajouter en exclusion dans la dernière partie la donnée EMBALLAGE car ayant son propre traitement dans la partie qui précède

Je n’ai pas trouvé dans ton fichier transmis cette adjonction d’exclusion pour cette dernière partie
Pas étonnant que tu n’obtiennes pas le résultat souhaité
Je l’ai rajouté et j’obtiens uniquement les données colonne B EMBALLAGE avec colonne D Z101 que remonte la première partie

J’ai modifié la position de cette ligne de code :

j = j + 1 'ligne colonne A différent de CUISINE et DOSAGE

que j’ai inclus en début de dernière partie :

If Sheets(« ORDO VIERGE »).Cells(i, 2) <> « CUISINE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « DOSAGE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « EMBALLAGE » Then
j = j + 1 'ligne colonne A différent de CUISINE et DOSAGE
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If

et d’éviter un nombre de lignes vides important entre chaque remonté

Ci-joint ton fichier avec la macro « PlanningDeballage » qui pour moi fonctionne correctement

Si les données colonne B onglet « ORDO VIERGE » se réduisent uniquement à ces données :

CUISINE
DOSAGE
EMBALLAGE

La dernière partie :

If Sheets(« ORDO VIERGE »).Cells(i, 2) <> « CUISINE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « DOSAGE » And Sheets(« ORDO VIERGE »).Cells(i, 2) <> « EMBALLAGE » Then
j = j + 1 'ligne colonne A différent de CUISINE et DOSAGE
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If

ne sert absolument à rien

Maintiens que celle-ci c’est suffisant :

If Sheets(« ORDO VIERGE »).Cells(i, 2) = « EMBALLAGE » Then
If Sheets(« ORDO VIERGE »).Cells(i, 4) = « Z101 » Then
Range(« A » & j, « E » & j).Value = Sheets(« ORDO VIERGE »).Range(« A » & i, « E » & i).Value
j = j + 1
End If
End If

Ton fichier corrigé

Testes et dis moi

Copie de new deb 2021(3).xlsm (75,0 Ko)

Bonjour FFO,
merci pour ta nouvelle proposition ,cela fonctionne bien evidemment.
Ne pourrait t-on pas regrouper comme tu l’avais fait sur une proposition précédente ,le tri et le chargement du planning en une seule macro :
Sub Traitement()

’ Traitement Macro

listejour = « /lundi/mardi/mercredi/jeudi/vendredi/ »
lignedeb = « /5/26/47/68/89/ »
lignefin = « /19/40/61/82/103/ »
For h = 1 To UBound(Split(listejour, « / »)) - 1
première = Split(lignedeb, « / »)(h)
dernière = Split(lignefin, « / »)(h)
Sheets(« PLANNING VIERGE »).Range(« A » & première, « A » & dernière).ClearContents
Sheets(« PLANNING VIERGE »).Range(« C » & première, « C » & dernière).ClearContents
Next
i = 2
Do While i < Range(« A » & Rows.Count).End(xlUp).Row
jour = Format(Range(« A » & i), « dddd »)
ligne = Split(lignedeb, « / »)(UBound(Split(Split(listejour, jour)(0), « / »)))
fin = Split(lignefin, « / »)(UBound(Split(Split(listejour, jour)(0), « / »)))
For j = ligne To fin
If Sheets(« PLANNING VIERGE »).Range(« A » & j) = «  » Then
Exit For
End If
Next
If Sheets(« PLANNING VIERGE »).Range(« A » & j) = «  » And j <= fin * 1 Then
Do While Format(Range(« A » & i), « dddd ») = jour
If Range(« B » & i) <> « CUISINE » And Range(« B » & i) <> « DOSAGE » Then
Sheets(« PLANNING VIERGE »).Range(« A » & j).Value = Range(« C » & i).Value
Sheets(« PLANNING VIERGE »).Range(« C » & j).Value = Range(« E » & i).Value
j = j + 1
i = i + 1
Else
If Range(« B » & i) = « DOSAGE » And Range(« D » & i) = « Z400 » Then
Sheets(« PLANNING VIERGE »).Range(« A » & j).Value = Range(« C » & i).Value
Sheets(« PLANNING VIERGE »).Range(« C » & j).Value = Range(« E » & i).Value
j = j + 1
i = i + 1
Else
i = i + 1
End If
End If

If j = fin + 1 Then
'i = i + 1
Exit Do
End If
Loop
Else
i = i + 1
End If
Loop
Sheets(« PLANNING VIERGE »).Cells.EntireRow.Hidden = False
For k = 1 To UBound(Split(listejour, « / »)) - 1
premièreligne = Split(lignedeb, « / »)(k)
dernièreligne = Split(lignefin, « / »)(k)
For l = premièreligne To dernièreligne
If IsError(Sheets(« PLANNING VIERGE »).Range(« D » & l)) = False Then
If Sheets(« PLANNING VIERGE »).Range(« D » & l).Value = 0 Then
Sheets(« PLANNING VIERGE »).Range(« A » & l).EntireRow.Hidden = True
End If
End If
If Sheets(« PLANNING VIERGE »).Range(« A » & l) = «  » Then
Sheets(« PLANNING VIERGE »).Range(« A » & l, « A » & dernièreligne).EntireRow.Hidden = True
Exit For
End If
Next
Next


End Sub

Franck.

Bonjour

Merci de ton retour

Ci-joint un nouvel exemplaire avec 2 traitements regroupant le tri et le chargement du planning
Dans l’onglet « ORDO » le précédent traitement dans l’onglet « ORDO VIERGE » le traitement nouveau dans lequel j’ai maintenu les 2 parties qui filtrent les remontées
la première qui filtre sur « EMBALLAGE » et « Z101 »
la deuxième qui filtre en colonne B toutes les données différentes de « CUISINE » « DOSAGE » « EMBALLAGE » n’ayant pas eu de ta part une réponse sur le bien fondé de son maintien

A toi de me dire

Les 2 procédures « Traitement » et « Traitement2 » peuvent être activé de n’importe quel onglet les données à traiter devant être dans cet onglet
Le bouton « CHARGEMENT PLANNING » dans l’onglet « ORDO » est relié à la macro « Traitement » celui de l’onglet « ORDO VIERGE » à la macro « Traitement2 »

Testes et dis moi

Copie de new deb 2021(4).xlsm (79,9 Ko)

Merci FFO ,tout est ok et fonctionne a merveille.
Franck .

Merci pour ta réponse
Ravi que cela te convienne
Peut être à bientôt de ta Bretagne
Au plaisir

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.