| ||||||||
Petit astucien ![]() | Bonjour à tous, je bloque sur la réalisation d'une macro. Dans mon document j'ai 3 tables: ("AccessImport", "DIFImport" et "Tabelle1") Je souhaite comparer la colonne B de la "Tabelle1" si une valeur se situe dans la colonne A de la table "DIFImport" alors on copie la valeur de la colonne C de la "Tabelle1" (donc 1 cellule plus loin de la valeur qu'on souhaite comparer) et on colle cette valeur dans la colonne D de la table "DIFImport" (a coté de la valeur de comparée) J'ai pris 2 screenshots: http://www.julp.info/excel/excel.JPG http://www.julp.info/excel/excel1.JPG Je m'engage à payer une bière à la personne qui arrivera à résoudre mon problème. En vous remerciant par avance, je vous souhaite encore une agréable après midi! Amicalement Julien PS: Galopin01, snif snif besoin de toi et des autres! Modifié par julp le 18/06/2007 16:08 | |||||||
Publicité | ||||||||
![]() | bonjour, une image n'est pas d'une grande utilité, elle ne renseigne pas sur la taille de tes feuilles. (Combien d'enregistrements dans "DIFImport" et combien d'enregistrements "Tabelle1") Le principe est pourtant simple : Voici l'algo (en petit nègre...) 'Pour chaque occurence dans ColonneSource Voir l'aide de Find dans VBA éventuellement pour la syntaxe. Essaie. Montre nous ce que tu es capable de pondre : on corrigera... A+ Modifié par galopin01 le 18/06/2007 21:59 | |||||||
Petit astucien ![]() | Bonjour, tout d'abord merci pour cette première réponse! Pour information: la table DIFImport compte 320 enregistrements et AccessImport 1716... Cela peut augmenter plus ou moins. J'avais pensé utiliser une mise en format conditionnelle mais sur plusieurs pages c'est pas possible je crois... Bon ben je vais voir ce que j'arrive à faire... Amicalement Julien Modifié par julp le 19/06/2007 11:34 | |||||||
![]() | bonjour, On repart à zéro et on résume : Il ressort de ton premier énoncé que la table "AccessImport" ne sert à rien... puisque la comparaison se fair entre la colonne B de la "Tabelle1" et la colonne A de la table "DIFImport" c'est pourquoi je te demande la taille de ces 2 feuilles et non celle de "AccessImprt" dont on n'à que faire... De plus ça serait bien que tu nous donnes sur (cjoint) un extrait de ces deux feuilles avec juste les colonnes utiles : ça m'éviterai d'éviter de perdre mon temps à reconstituer deux feuilles identiques à tes images pour tester. A+ | |||||||
Petit astucien ![]() | Bonjour, ci-joint le fichier en question: http://www.julp.info/excel/galopin01.xls Ouais je me suis trompé, en effet comme tu as pu me reprendre: La colonne B de la Tabelle1 (1716 enregistrements) doit être comparée à la colonne A de DIFImport (320 enregistrements). On ne se préoccupe pas de la table AccessImport. Par exemple, si une valeur colonne A [DIFImport] est trouvé dans la colonne B [Tabelle1] alors on copie le texte dans la colonne C [Tabelle1] et on le colle dans la colonne D [DIFImport]. En te remerciant déjà pour la peine que tu prends à m'aider. Passe une agréable fin d'après midi! Merci Merci Amicalement Julien | |||||||
![]() | Quel est le but du jeu : - compléter les valeurs manquantes (on ne s'intéresse qu'aux lignes de "DifImport" ou il n'y a rien en colonne D) - ou au contraire, il faut passer en revue toutes les lignes de "DifImport" et éventuellement remplacer certaines "valeurs" de la colonne D par de nouvelles valeurs issues de "Tabelle1"? A+ | |||||||
![]() | Bonsoir, En l'absence d'indication j'ai fait dans les deux cas. Mais il faut noter que c'est important : Si on examine seulement les cas ou on a des cellules vides c'est beaucoup plus rapide que si on examine toutes les lignes... La macro N° 1 examine seulement les lignes ou la référence la colonne D est vide. Sub galopin1() La seconde macro passe toutes les lignes en revue. Sub galopin2() A+ | |||||||
Petit astucien ![]() | Bonjour, Ca a l'air de marcher... Galopin2() est optimal. si je veux rajouter une condition. Genre je voudrais que le texte colonne A de la Tabelle1 remplace le texte colonne A de la table DIFImport. C'est possible? Galopin, je te remercie encore. Tu viens de gagner dors et déjà ta bière. Maintenant pour la livraison faudra que tu me tiennes au courant. Amicalement Julien | |||||||
![]() | bonjour, Non testé... Sub galopin2() J'ai gagné le PAC ? A+ | |||||||
Publicité | ||||||||
Petit astucien ![]() | Bonjour, excuse moi galopin pour cette réponse tardive j'ai du partir dans le cadre de mon boulot. Mais je suis de retour! je viens de finir de modifier ma table "symboltabelle_regelung" qui remplace "DIFImport". Mais cela fonctionne en partie... Et pourquoi? je n'ai pas trouvé... Tu peux jeter un petit coup d'oeil stp? Le fichier est disponible sur: http://www.julp.info/excel/galopin.xls Par exemple pour la cellule ligne 116 dans la table "symboltabelle_regelung" colonne A devrait être repéré dans la table "Tabelle1" à la ligne 564 colonne B. Puis le texte en colonne A de la table "Tabelle1" devrait remplacer celui de la colonne A de la tabele "symboltabelle_regelung" et le texte en colonne C de la "Tabelle1" remplacer celui de la colonne D de la table "Tabelle1". Pourquoi ca ne marche pas? Une erreur dans le code de la macro? En te remerciant par avance pour te remettre dans le bain. Je te souhaite encore une agréable après midi! Amicalement Julien PS: Tu connais mon mail je crois, je suis un homme de parole pour ta bière je t'invite quand tu veux dans le cadre de mes disponibilitées | |||||||
![]() | Oups ! Il faut remplacer par cette ligne : Set isect = Ws2.Range("B:B").Find(ref, , xlValues) En effet la recherche doit s'effectuer dans toute la colonne de Ws2 ! A+ | |||||||
Petit astucien ![]() | Bonjour, nickel galopin! T'assure la chaussure... J'ai encore rencontré une difficulté supplémentaire dans la table "signalliste" dans la colonne C il y a des x, je les copie en colonne D de la table "Tabelle1". Il faudrait que les données sois gérées comme auparavant avec la condition du x en plus. (Comparer colonne D "Tabelle1"). Si il y un x on copies les données comme auparavant dans la table "symboltabelle_regelung" Le fichier est disponible sur: http://www.julp.info/excel/galopin.xls Merci encore par avance, Amicalement Julien
PS: File moi ton adresse ou un numéro en privé que je puisse te remercier | |||||||
![]() | Bonjour, Je ne comprend pas la question, ou alors il n'y a pas de rapport entre les deux questions. S'il ya deux valeurs identiques la copie s'effectue qu'il y ait un x ou pas ! A+ | |||||||
Petit astucien ![]() | Bonjour, en fait c'est une condition supplémentaire que j'aimerais ajouter nécessaire à mon application. C'est à dire que s'il y a un x dans la colonne D (Tabelle1) alors on remplace le texte en colonne A et C (Tabelle1) dans la colonne A et D (symboltabelle_regelung) comme avant le tout en comparant la valeur de la colonne B (Tabelle1) et colonne A (symboltabelle_regelung). S'il n'y a pas de x: alors on regarde comme les valeurs entre la colonne B (Tabelle1) et colonne A (symboltabelle_regelung) et on supprime la ligne complète ou la valeur est présente dans la table (symboltabelle_regelung). Le fichier est disponible sur: http://www.julp.info/excel/galopin.xls Encore une fois je le répète merci par avance pour ton aide qui m'es précieuse. Amicalement Julien | |||||||
![]() | bonsoir, je sais pas trop si j'ai bien compris... Sub galopin2()A+ | |||||||
Petit astucien ![]() | Bonjour Galopin, encore une fois c'étais correct. J'ai travaillé encore un peu plus loin et je bloque sur la réalisation d'une nouvelle macro. Une condition s'est ajouté à la réalisation de mon projet: Si en Colonne C de la "symboltabelle_regelung" il y le mot BOOL, alors on copie le texte en colonne E de la Tabelle1. Tout en respectant les conditions précédentes! Sub galopin2() Encore une mission pour toi galopin ;-) Le document Excel reste disponible sur: http://www.julp.info/excel/galopin.xls En te remerciant encore pour la rapidité et l'exactitude de tes réponses. Amicalement, Julien Modifié par julp le 04/07/2007 14:05 | |||||||
![]() | bonsoir, en supposant que la condition se trouve 3 colonnes plus loin... ... A+ | |||||||
Publicité | ||||||||
Petit astucien ![]() | ouais mais non en fait... regarde bien dans la Tabelle1 il y a pas de BOOL 3 colonnes plus loin En plus je viens de voir en plus que t'as pas du choper le bon fichier, parce que le serveur a fait nimpe...enfin bref je veux que si en Colonne C de la "symboltabelle_regelung" il y le mot/valeur "BOOL" et si une valeur en colonne B Tabelle1 est égale à une valeur de la colonne A symboltabelle_regelung, alors on copie le texte de la colonne E de la Tabelle1 dans la colonne E de la symboltabelle_regelung... Je veux aussi traiter les autres valeurs qui n'ont pas de valeurs BOOL dans la colonne C symboltabelle_regelung mais qui ont un x. En gros on fait comme avant, on a les même conditions! Sauf que si il y a un BOOL dans la colonne C symboltabelle_regelung alors on copie le texte associé colonne E de la Tabelle à l'aide de la comparaison de la colonne A symboltabelle_regelung et colonne B Tabelle1 et si un x colonne D Tabelle1 il y a. Rajoute cette Macro dans excel: Sub textbool_copy() End Sub J'espère que tu m'as compris... Amicalement Julien | |||||||
![]() | bonsoir, C'est vrai que je n'ai pas chargé le document joint car je lis toujours les questions en diagonale... car je n'ai pas trop de temps... Il m'arrive aussi parfois de travailler ailleurs ! Mais tu pourrais peut-être te débrouiller un peu seul, je t'ai donné un algo je ne vais pas tout te macher ! C'est le même problème que ce soit un BOOL ou un "x", YAKE la copie qui change... If isect.Offset(0, 2) = "x" Then Mais je n'ai peut-être toujours rien compris... A+ | |||||||
Petit astucien ![]() | Salut Galopin, déjà bravo pour tes 3000 messages Sinon j'ai finalement réussi à réaliser ma fonction mais en 2 macros c'était plus simple pour moi. Merci encore de m'avoir mis sur la voie! A bientôt, Amicalement Julien [sujet résolu] Modifié par julp le 11/07/2007 13:24 | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|