Mise en forme conditionnelle+Transposition sans doublons et cellules vides

Bonjour à tous,

Après pas mal de temps à chercher sur internet et étant novice en la matière, je bloque...

L'excel final est très gros donc Application.ScreenUpdating = False / True est un must, exact ?

Dans l'excel joint, j'aimerai faire les deux choses suivantes:

1) Les données de la colonne C de la feuille data en partant de la ligne 2, les transposer dans la feuille Formatting à partir de la colonne K, ligne 2 (puis L2, etc) sans les cellules vides et sans les doublons. De plus, l'onglet data sera évolutif, donc les colonnes s'incrémenteront si de nouveaux composants sont utilisés donc pas de clear sur ce qui a déjà été réalisé.

Je bloque pour mixer le tout, j'arrive à faire étape par étape mais il doit bien avoir un moyen de faire ça d'un coup..

2) Là, j'ai l'idée, mais comment passer en VBA...

a- Le principe: Dans Formatting, la colonne C à partir de la ligne 3 aura les différents ID de la colonne A de la feuille Data qui seront renseignés manuellement.

Donc par exemple j'aimerai que les cellules des composants de l'ID C3 soient mises en fond gris clair (ou autre couleur assez voyante mais sans cacher l'écriture ). Ce qui veut dire AB.125 est composé de 4165, 131, 354 et 5646 (donc une recherche est à faire dans la feuille Data pour savoir quels composants sont utilisées pour l'ID C3), donc quand l'un de ces composants match avec la ligne 2 à partir de K, mettre un fond à la cellule croisant la ligne C3 et la colonne du composant qui match.

Ce qui permettra ensuite à une personne de savoir quelles cellules remplir sans avoir à jouer à cache cache avec des milliers de colonnes.

En espérant avoir été assez clair... Si jamais ce n'est pas le cas, j'essayerai d'être plus explicite !

Merci d'avance pour votre aide

20exemple.xlsx (11.63 Ko)

Bonjour,

voici un exemple,

dit moi si ça convient ?

Bonjour Sab,

Merci de ton retour rapide. J'ai dû mal m'expliqué, je m'en excuse.

Les données que j'ai renseigné dans le fichier ne bouge en aucun cas, au contraire, il faut les utiliser.

Ci-joint, un exemple sans macro bien sûr avec le résultat final voulu en prenant pour exemple C3 et C4 de la feuille Formatting. Les xxx seront des données rentrées plus tard par une personne. D'où le besoin de rendre les cellules visibles pour ne pas qu'elle mette des heures à chercher les cellules qu'elle devra remplir.

En espérant avoir été plus clair...

Merci d'avance.

11exemple.xlsx (11.78 Ko)

Petite màj en supplément de ma réponse.

Dans l'excel joint, une petite macro tourne pour filtrer la colonne C de data des doublons et des cellules vides (je ne sais pas pourquoi une cellule vide apparaît...).

Il reste donc à écrire colonne après colonne et non de ligne en ligne. Donc la copie devra commencer à K2 puis L2 puis M2 etc...

Et ensuite, il reste l'histoire du format qui fera apparaître les cellules en gris comme montré dans l'excel précédant.

En espérant vous avoir fourni assez pour comprendre ce que je recherche.

Merci pour l'aide !

16exemplesuite.xlsx (16.48 Ko)

re,

désolé, je ne comprend pas comment les données doivent être transposées

Pour faire simple, je veux copier sans cellules vides et sans doublons les valeurs de la colonne C de Data (C2 à Cxxxxx) à la feuille formatting à partir de la cellule K2 puis L2 puis M2 puis N2 etc (donc pas K2 à Kxxxxx). C'est là première étape de ce que je souhaite.

Ai-je été plus clair ?..

re,

Ai-je été plus clair ?..

tu saura me le dire

Bon, je crois que je suis vraiment mauvais...

Je recommence en essayant de faire mieux.

Dans l'excel joint, aucune donnée écrite ne doit être supprimée/déplacée ailleurs

Étape 1: Les données impliquées dans cette étape sont sous fond bleu et doivent ce trouver sous le fond bleu de Formatting

Ce qui veut dire : Copier/coller sans cellules vides et doublons de Data C2:Cxxxx à Formatting K2 puis L2 etc ==> C2 copier en K2 puis prochaine valeur non doublon et non vide copier en L2 etc.

Ps: la couleur du fond est uniquement pour aider à comprende ce que je recherche (donc purement visuel)

Une fois l'étape 1 passée, j'essayerai d'expliquer d'une façon identique l'étape 2 (en espérant que cette explication soit plus précise).

Merci encore pour ton temps et ton aide

11exemple.xlsx (12.80 Ko)

re,

désolé, je ne comprend pas comment les données doivent être transposées

as-tu fait les 2 test ?

Oui j'ai bien fait les deux.

J'ai fait un avant/après comme si la macro tourne. Donc après serait le résultat.

J'ai fait un tri dans l'ordre pour écrire plus vite, non nécessaire dans la macro

Donc l'étape 1 consiste à cela valeurs de C2:Cxxxxx de Data copier/coller sans doublons et vides vers K2 puis L2 etc

La colonne ID n'a pas lieu d'être utilisée pour cette étape

apres avant

Je crois que je viens de comprendre... En relisant le code, déjà, je vois un clear content donc surtout pas faire ça car données écrites besoin dans étape 2

Ensuite, la colonne A de data n'est pas utile pour cette étape 1. Seulement la C de Data.

En bidouillant ce que je peux, j'ai mis en vert la cellule qui commence bien avec test 1. Et ensuite il faut enchainer sur les colonnes suivantes avec toujours la ligne 2

re,

j'aimerais savoir si c'est disposition verticale (bouton test1)

ou si c'est disposition horizontale (bouton test2)

que tu veux avoir ?

Re,

Comme dit dans ma réponse, le bouton test 1 J'ai juste changé la colonne A à C de la feuille data et mais j'ai pas réussi à avoir C3 (qui n'est ni doublon ni vide) en L2 de Formatting... et ainsi de suite.

Les screens aident-ils à mieux percevoir mon idée ?

re,

pour moi ces données ne sont pas des doublon,

ab.123 5646

AB.125 5646

AB.127 5646

elles le sont pour toi ?

ps/ c'est quoi le décalage sur le dernier fichier transmit ?

re,

Comme je le disais, la colonne A (ID=AB.xxx) de Data et colonne C de Formatting (ID=AB.xxx) ne sont pas à prendre en compte pour l'instant. Donc on fait comme si elle n'existent pas pour cette étape.

Donc, en partant de là, la colonne C (composants) de Data contient des cellules vides et des doublons. Mon besoin est donc de copier seulement les cellules pleines et uniques de cette colonne et de les coller dans la feuille Formatting à partir de la cellule K2 et en incrémentant par colonne donc L2 etc et non en incrémentant par ligne (K3 K4 etc).

Une fois cette étape réalisée, on pourra utiliser le reste des données que j'ai écrit.

Donc ça donne en utilsant ton exemple:

Data C2: 5646

Data C3: 5646

Data C4: " " (vide)

Data C5: 5646

Data C6: 360

etc...

Donc, grâce à la macro, dans la feuille Formatting, il appraîtera:

Formatting K2: 5646

Formatting L2: 360

etc...

Ps: Aucune idée, c'est en bidouillant que ça a fait ça... My bad...

re,

un autre essai...

Re,

C'était vraiment proche, j'ai réussi à modifié ta macro pour avoir le résultat voulu.

J'ai supprimé la test et gardé la liste.

Au lieu de la colonne 1 pour les lignes suivantes, j'ai mis 3

liste(n) = .Cells(2, 3).Value

For i = 2 To .Cells(Rows.Count, 3).End(xlUp).Row

p = .Cells(i, 3).Value

liste(n) = .Cells(i, 3).Value

Et magie (pour moi haha), j'ai ma première étape de complétée.

Si tu as compris le but, on passe à l'étape 2 où ta macro Test ressemble de près (ou de loin, aucune idée) ce que je recherche.

Dans l'excel joint, je n'ai gardé que ce dont on a besoin pour la première étape, si tu es ok, je ferai une explication plus explicite pour la seconde étape.

Merci encore pour ton aide Sab et désolé de m'exprimer si mal... Je n'ai plus l'habitude de la prog et de l'explication de ce que je souhaite sur ça (en général, je trouve comme un grand et adapte avec le pas à pas).

re,

c'est super, bravo pour la 1er étape,

Si tu as compris le but, on passe à l'étape 2 où ta macro Test ressemble de près (ou de loin, aucune idée) ce que je recherche.

je suis près

montre moi le résultat final attendu...

Re,

Super !

J'ai donc retouché l'excel et l'ai mis en mode fini (= macro étape 2 succès)

Donc, maintenant que nos composants sont listées dans formatting, on peut ajouter les ID

Les ID dans la feuille Data seront incrémentés si un nouvel assemblage apparait.

Dans formatting, la colonne ID va correspondre à la prod. Pour faire simple, on a une extraction qui va nous incrémenter cette belle colonne C (ID) au fur et à mesures.

La personne qui doit préparer les composants correspondant doit renseigner le numéro de lot de chaque composant constituant l'assemblage. Or, avec environ 1000 colonnes de composants, chercher quel composant est utilisé, bah, c'est pire que nécrophage.

Donc, j'aimerai mettre un fond (gris sur l'exemple) sur les cellules qui correspondent aux composants nécessaires aux ID de la colonne C de formatting.

Ce qui donne le résultat que j'ai fait manuellement.

Plus, tard, cette feuille sera sans doute vouée à évoluer et être plus simple d'utilisation. (Donc je reviendrai )

Mais pour l'instant, la personne qui l'utilisera se fera son avis et me fera un retour par la suite.

Merci beaucoup pour ton aide, tu me sauves des heures de tentatives ! (Faut vraiment que je me remette à VBA pour au moins les bases..).

PS: Je ne suis plus au boulot, j'ai trouvé la solution en rentrant, donc demain, je mets en application sur notre petit excel et si aucun retour sur étape 1, tout est bon !

Ps2: De mémoire, je crois qu'il y a un texte parasite lors de l'extract des composants (mais on en a besoin pour le temps de prod...), donc en plus des doublons et des cellules vides, je voudrai exclure toute cellule contenant "Labor". Merci !

re,

à cette étape il faut prévoir si la liste K2:AC2 sera trier en ordre croissant ,

est ce que c'est le cas ?

Rechercher des sujets similaires à "mise forme conditionnelle transposition doublons vides"