Remplacement de valeurs de cellule par ligne

Bonjour communauté,

Je débute vraiment en VBA, et j'ai réalisé un code me permettant d'ouvrir un fichier .xlsx pour copier sa feuille dans le fichier (Onglet Ref) portant la macro afin de manipuler des données selon leur valeur ou précisément selon leur suffixes. Grosso modo je souhaite à partir de la feuille Ref garder la colonne A intacte et faire des remplacements sur les cellules de la plage B et les colonnes suivantes de sorte que lorsque la cellule se termine par DK_ je la garde et lorsque ce n'est pas le cas je remplace la cellule par sa ligne en comparant avec la colonne A depuis Ref.

J'ai tenté de copier les cellules de Ref ne finissant pas par DK_ dans la feuille Step1 et l'inverse dans Step2 et faire un merge entre les deux mais ca ne fonctionne pas. (Boucle tenté pour remplacer les cellules de Step1 qui ne finissent pas par DK_ par leur ligne depuis Ref)

19dk-1.xlsm (32.06 Ko)
15dk.xlsx (10.31 Ko)

Pourriez vous m'aider svp. vous trouverez les fichiers en pièces jointes Merci bcq

Bonjour,

Votre explication est très confuse. Qu'entendez-vous par " je remplace la cellule par sa ligne en comparant avec la colonne A depuis Ref" ? vous parlez de remplacer une cellule par une ligne ? Ce sont deux choses différentes. Voulez-vous dire remplacer la valeur de la cellule par celle se trouvant sur la meme ligne en colonne A ?

Ie. si C3 finit par DK, la remplacer par A3 ?

Autrement pour votre code il "ne fait rien" dans le sens ou l'étape 1 efface toutes les cellules vérifiant un critère, puis l'étape 2 toutes celles ne vérifiant pas le critère. Vous appliquez au final exactement le meme traitement aux cellules qu'importe leur valeur.

Pouvez-vous réexpliquer s'il-vous-plait votre objectif de manière simple, concise et avec des exemples ? Un fichier, ou au moins quelques lignes, du résultat attendu serait optimal.

Edit Sorry mes réponses demandent une longue préparation et je n'ai pas rafraichi...

Pour compléter l'intervention de Saboh

Bonjour et

Déjà moi je vois un problème "Francais" n'est pas vraiment ce qui est attendu on souhaite connaitre ta version Excel. Francais ne va pas vraiment nous aider à t'aider...

La version d'Excel se lit dans Fichier > Compte (en bas) Cliquer sur le point d'interrogation)

ver2016 copie

puis dans l'écran suivant :

ver2016b

L'information demandée est l'année 2016, 2019... ou 365 si tu as un abonnement et le cas échéant la mention 32 ou 64 bits

Bien vouloir modifier ton profil en conséquence.....;

Ensuite concenant ton casseur tes explications sont plus embrouillées qu'autre chose : A prmière vue tu nous joins un fichier xlsx dont on n'a pas vraiment besoin puis qu'il s'agirai de reprendre ton code à partir de la feuille Ref donc bref on va être obligé de se gratter la tête pour comprendre.

Bon pendant qu'on réfléchit ça va te permettre de préciser ta version et également de préciser ce que veut dire "lorsque ce n'est pas le cas je remplace la cellule par sa ligne en comparant avec la colonne A depuis Ref."

Donc comment doit se terminer la comparaison ?

Ce qui serait bien c'est que nous fasse un classeur avec les données de départ et une feuille avec une dizaine de ligne retouchée (même manuellement) mais montrant le résultat attendu. Les macros que tu as pu faire, on s'en fiche un peu puisse que de toute façon elle ne te satisfont pas.

Bon je veux pas dire non plus qu'elle ne valent rien hein... Ne me fais pas dire ce que je ne dis pas. Simplement il est très probable qu'elles ne serviront pas à grand chose. Soit que le répondeur n'y connaisse rien en VBA et qu'il tente du PQ (Power Query) soit qu'il utilise VBA et ce sera sans doute d'un niveau un peu plus corsé...

A+

Salut,

Merci pour vos retour et désolé si je me suis mal exprimé, j'utilise du Office 365 sur 32 bits? J'essayerai d'étre plus clair :

Le fichier DK_1.xlsm me permet d'ouvrir le DK.xlsx afin de copier toutes la feuil1 de ce dernier ce qui correspond à cette plage de donnée :

OAFCBOADK_
OANL_OADK_
OANLMOADK_
OANL_OADK_OADK_
OANLMOADK_
OANLMOADK_
OANL_OADK_OADK_
OANL_OADK_
OANL_OADK_
OACP_OADK_
OAFIDOADK_
OALO_OADK_OALOCOADK_
OALOCOALO_OMDK_
OANL_OADK_
OA50NL_OADK_
OADZ_OADK_OADK_
OA60NL_OADK_
VNNL_VNDK_
VNNL_VNDK_
17NL_17DK_
OA70KD_OADK_
OA70MD_REDOA70
REDOA70OA70MD_OA70MGKOADK_OA70MGH
OA70MGHREDOA70
OA70MGKREDOA70
OA80FCBOA50DK_OADK_
OAFCBOADK_OADK_
51NL_51DK_
REDOA70OA70MD_OA70MGHOA70MGKOADK_
OANL_OADK_
OACP_OADK_OADK_
OAFIDOADK_
OALO_OALOCOADK_OADK_
OALOCOALO_
OANL_OADK_
OA50NL_OADK_
23DZ_OADK_OADK_
OA60NL_OADK_
27NL_27DK_
OA70KD_OADK_
OA70MD_REDOA70
OA70MGHREDOA70
OA70MGKREDOA70
OANL_OADK_
OANL_OADK_
OANL_OADK_
OA80FCBOA50DK_OADK_
OAFCBOADK_OADK_

Donc la je souhaite garder la colonne A intacte mais avoir toutes les autres cellules des autres colonnes en gardant le bon positionnement avec des valeurs finissant en DK_ majoritairement c'est le cas pour les lignes mais pas pour toutes. Alors premier réflexe:

-Je copie en Step1 nouvelle feuille Ref (plage partagée en ci-dessous) avec la colonne A intacte mais sur la plage B et au déla je garde que les valeurs de cellules qui ne se terminent pas par DK_ et j'essaie de faire une condition : si correspondance entre valeurs cellules plage B et au déla dans Step1 avec les valeurs colonne A de Ref je copie dans Step1 la valeur de la cellule en question mais en la remplacant par sa ligne de Ref et ensuite garder que les DK_ mais un peu compliqué à mon niveau. Merci pour votre aide

NB : Step2 prend Ref mais en gardant que les cellules finissant par DK_ dans la plage B et au déla (j'ai essayé de faire un merge mais ca n'a pas fonctionné)

Cordialrement;

Je t'ai donné un lien pour modifier ton profil

Merci de corriger.

Je passe la main car je n'ai pas 365 et les explications ne me semble pas claires:

Ce qui serait bien c'est que nous fasse un classeur avec une feuille avec une dizaine de lignes retouchées (même manuellement) mais montrant le résultat attendu.

A+

Toujours pas d'exemple et des explications toujours aussi brumeuses…

S'il vous plait faites des lignes d'exemple !

Voulez-vous :

Pour chaque ligne, parcourir les colonnes, si la cellule est de type "xxxDK_", la remplacer par du vide ainsi que toutes les suivantes.

Sinon, lire la cellule de la colonne suivante et répéter.

Puis changer de ligne.

Par exemple

ABCDDK_
ABDK_
DK_

Renverrai

ABC
A

?

Re bonjour,

Merci pour vos réponses, le but est que à chaque fois que la boucle croise une valeur de cel qui ne finit pas par DK_ de la plage B et au déla->comparer à la colonne A de Ref et remplacer cette cel par sa ligne dans Ref en gardant que les DK_ et en concaténant avec ceux existants initialement. Vous trouverez en pièce jointe le résultat attendu dans l'onglet Résultat manuellement, les cel sont identifiés en jaune dans Feuil1. Merci

Cordialement;

11dk-res.xlsx (11.85 Ko)

Re,

Votre fichier d'exemple n'est pas consistant, ou suit une logique qui m'échappe.

Par exemple :

Pourquoi (sur la feuil1) ligne 13 colonne C on a OALOC → OADK (jusque là ok)

Mais ligne 24 les valeurs en B et C sont effacées ?

Pourquoi ligne 34, colonne C, OADK_ devient OMDK_ ?

Idem ligne 35 OALO_ devrait devenir OADK_ or on a OMDK_ puis un OADK_ qui apparait de nulle part en colonne D?

Autrement je crois avoir compris votre logique mais les exemples sembles présenter plusieurs erreurs, ou quelque chose m'échappe encore.

Voici l'algo que j'ai en tete pour le moment :

Pour chaque ligne,

Lire les valeurs à partir de la colonne B et les suivantes (s'arreter à la première cellule vide)

si valeur finit par DK_ → next

sinon, remplacer par valeur en A_i (2 premières lettres + DK_) ET supprimer toutes valeurs suivante de la ligne ne présentant pas DK_

Ligne suivante

Bonjour Saboh,

Merci pour ton retour, oui parce que ce sont les cellules répetitifs et en tout cas l'idée c'est de garder que les DK_ sur cette plage dans le résultats final. Merci bcq bonne journée

Bonjour,

Merci pour vos réponses

15dk-res.xlsx (11.19 Ko)

, je vais simplifier encore le fichier en supprimant qlq lignes pour que ca soit plus simple le résultat que je souhaite avoir est dans la feuil2 du fichier (Remplacement des cellules tagés en jaune par leur ligne dans Feuil1) C'est exactement ce qui se passe pour les lignes 12,22,23,24,25
J'essaie de réflechir à un algo plus simple en parallèle. Bonne journée

Cordialement

Rechercher des sujets similaires à "remplacement valeurs ligne"