Recherche cellule à partir d'un format hexadécimal

Fermé
julien - 12 janv. 2016 à 16:39
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 15 janv. 2016 à 11:22
Bonjour,

Je voudrais, s'il est possible sélectionner une cellule à partir d'un format hexadécimal , je m'explique :

- J'importe des fichiers dont la position des colonnes est aléatoires d'un fichier à l'autre
- Je voudrais retrouver la colonne ou se situe les données hexadécimales
- Pour les copier dans ma feuille 2

Avez vous de quoi m'aider ?

Merci bien
A voir également:

11 réponses

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
13 janv. 2016 à 02:49
Bonsoir,

il n'y a pas à proprement parler de format hexadécimal. Ca n'est que du texte.
Pour t'en convaincre, fait un DECHEX() sur une cellule contenant un nombre décimal.
La valeur numérique passée en paramètre sera de type 1 alors que la valeur hexa sera de type 2, ie du texte.

Ceci dit, c'est du texte qui ne contient que 0..9 et A..F. Donc tout n'est pas perdu.

Tu ne dis pas si tes données hexa sont issues d'une formule et si cette formule est récupérée.


As-tu un signe distinctif visible ou pas qui permettrait de localiser ces valeurs....

Bref, envoie ton fichier (un extrait suffira) qu'on voit ce qu'il y a autour de tes valeur hexadécimales.
Passe sur cjoint.fr pour monter ton fichier.

Cordialement
0
Merci JvDo de ta réponse si rapide ,
mes données hexadécimales ne sont pas issues de formules et malheureusement il n'y a aucun signe distinctif . Je ne peut pas utilisé le site internet à mon bureau donc je te copie colle pour te montrer le type de données..

086C - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FF20 - 4CC0 - 1300 - A82A - 0200
0865 - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FF20 - 4CC0 - 1300 - A82A - 0200
0866 - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FF20 - 4CC0 - 1300 - A82A - 0200
0998 - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FFC0 - 8A40 - 1300 - A82A - 0200
0991 - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FFC0 - 8A40 - 1300 - A82A - 0200
0992 - 0000 - 0000 - 0003 - 4444 - 4444 - 4444 - 4444 - FFFF - FFC0 - 8A40 - 1300 - A82A - 0200

Cordialement
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
13 janv. 2016 à 11:27
Bonjour,

En supposant que tes séries de 4 caractères/chiffres sont chacune dans une colonne distincte, dans la zone AB28:AO33 par exemple, tu peux utiliser la formule :
=SOMMEPROD(--(NON(ESTNUM(AB28:AB33))))>0

qui affichera VRAI si la zone AB28:AB33 contient des chaînes de caractères.
C'est à recopier sous ou sur chaque colonne de données pour identifier celles (les colonnes) candidates à contenir de l'hexa.
Naturellement, si une colonne contient "toto" elle sera identifiée comme contenant de l'hexa.
Ca n'est donc pas fiable à 100%, mais, au regard de ce que tu as transmis, ça pourrait fonctionner.

Si tu veux une formule pour toute la zone (sans recopie donc), tu sélectionnes une zone d'une ligne sur le nbre de colonne de tes données (AB25:AO25 par exemple) et tu saisis :
=SOMMEPROD(--(NON(ESTNUM(INDEX(AB28:AO33;0;TRANSPOSE(LIGNE(INDIRECT("1:"&COLONNES(AB28:AO33)))))))))>0

en la validant par CTRL+MAJ+ENTER.

A partir de là, tu peux obtenir les n° de colonne des données potentiellement hexadécimale.

Cordialement
0
Merci de ta réponse ,

Malheureusement mon fichier est plein d'autres chaines de caractères , il ne détectera donc pas seulement les hexadécimales avec cette technique ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
14 janv. 2016 à 12:33
Bonjour,

Il reste une possibilité d'identifier les chaînes de caractères ne contenant que les lettres A à F.
Cela suppose donc que les autres chaînes de caractères contiennent contiennent d'autres lettres que A...F pour être discriminées.
Soit tu vérifies tout seul, soit tu envoies un vrai fichier consistant de ce que tu gères (anonymisé bien entendu).

Cordialement
0
Merci de ton aide mais malheureusement les autres phrases contiennent également ces caractères .. je pensais qu'une fonction précise pouvait rechercher un format hexadécimal comme la fonction qui recherche un format date ..

Je vais me débrouiller autrement , merci de ton aide et à bientôt peut-être ..
0
Re-bonjour JVOD

Je reviens vers toi pour affiner ma demande , après examination je me rends compte que les colonnes se situes à chaque fois décalé de 26 à 31 colonnes sur la droite d'une cellule connue , je m'explique :

- Par une recherche de format je détecte une colonne dans mon tableau ( Colone X )
- Il faudrait que je trouve une formule détectant qu'une colonne situé entre X + 26 à X +31 contiennent des lettre entre A et F ET des chiffres entre 0 et 9 pour les copié et coller dans une autre feuille

Je sais que c'est compliqué mais saurais-tu comment procéder ?

Merci d'avance
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
Modifié par JvDo le 14/01/2016 à 17:17
Bonjour,

une idée : tu fais une conversion Hexa vers Decimal pour chaque colonne et tu comptes les erreurs.
S'il n'y en a pas, la colonne est candidate à l'hexadécimalité.

formule :
SOMMEPROD(--ESTERREUR(HEXDEC(INDEX(DECALER($F$1;0;26;39;1);LIGNE($1:$39)))))


$F$1 : c'est la 1ère cellule de ta colonne X
26 : c'est le premier décalage. il suffit de le faire varier jusqu'à 31
39 : nombre de ligne de tes colonnes

cordialement
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
Modifié par eriiic le 14/01/2016 à 19:06
Bonjour,

Avec un peu de vba.
Ouvre ce classeur puis un des tiens avec la feuille des codes hexa active, et tape Ctrl+w
La plage hexa est copiée et collée à la suite dans Feuil2 colonne A de ce classeur.
Plus qu'à enchainer sur les autres classeurs.
Pour le test je me contente de découper sur " - " et regarde si j'ai bien 14 éléments. Si il faut compléter le test tu dis.
Ctrl+F11 pour voir le code dans le Module1.
https://www.cjoint.com/c/FAoseGlGiLB
Reste à adapter à la réalité et à ton besoin exact.
eric

En essayant continuellement, on finit par r�ussir. 
Donc plus �a rate, plus on a de chances que �a marche.(les Shadoks)
En plus du merci (si si, �a se fait !!!), penser � mettre en r�solu. Merci
0
Salut les gars ,

Merci de vos réponse , en effet j'ai oublié une grosse précision , je bosse en macro.. donc eric m'a l'air plus proche de ce que je recherche , cependant je n'arrive pas à avoir ton code de macro à travers ton " TreeGrid" ctrl+ F11 ne donne rien .. merci
0
Excusez moi je ne suis pas doué le matin ^^ Je n'avait pas téléchargé le Excel .. je regarde et je vous tiens au courant .. merci
0
Alors , après essai , le code semble être exact , cependant je ne cherche pas entre la colonne 26 et 31 ..

- J'ai fait une recherche de format pour tomber sur la première cellule d'une colonne , j'affecte à la variable f la coordonnée de la cellule active

- Ensuit j'aimerais dire " Se décaler de 26 colonnes par rapport à la cellule f "

- Et effectuer ce test jusqu'à la cellule f+ 31

Je sais pas si c'est possible et si je me suis bien exprimé ..

exemple :


If IsNumeric(Mid(ActiveCell, 1, 4)) And Len(ActiveCell) = 8 And (Not IsNumeric(Mid(ActiveCell, 5, 1))) Then 'Cette condition permet d'effectuer une recherche par la forme du contenu d'une cellule (ici celle d'un XXXX)
'
' En cas de cellule conforme, on la copie et colle à son emplacement sur la deuxième page

Set f = ActiveCell ' f prend la valeur de la cellule active
Selection.Copy 'On copie la sélection
Sheets(2).Select 'Selection de la feuille 2
Cells(k, 2).Select 'Selection de la cellule (k,2)
ActiveSheet.Paste 'On colle la cellule sélectionnée

Sheets(1).Select 'Selectionner la feuille 1


A partir de ca j'aimerais l'adapté a ton code ..

Merci ( je sais que je suis pénible ^^ )
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
15 janv. 2016 à 11:22
Bonjour,

tu peux rechercher entre colonne 1 et 256 si tu veux.
Mais ce n'est qu'une seule valeur que tu veux ? Pas toute une colonne ?
Si tu mettais un extrait de fichier en disant ce que tu veux copier et où tu veux le coller on y verrait plus clair.
eric
0