VBA - extraire valeur numérique et copier la valeur sur une rangée de cellules [Résolu]

Signaler
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
-
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
-
Bonjour à tous,

Je bloque sur un problème excel et je sollicite de l'aide sur ce forum en espérant recevoir les lumières qu'il me faut!!

Tout d'abord, voici si jamais le lien du fichier qui permettra de mieux éclairer la problématique:
https://www.cjoint.com/c/JEnobPnEEPK

J'ai une extraction de données qui est difficilement exploitable et je cherche à la "ranger" pour pouvoir en faire un TCD.

Pour ce faire j'ai besoin de pouvoir extraire le matricule (sans les espaces et le nom) des cellules en jaune colonne B et de pouvoir les dupliquer en colonne A jusqu'au prochain matricule.

L'objectif est de pouvoir obtenir l'information comme indiqué en colonne D.

Sur cet exemple, cela est réalisable à la main, mais dans un autre fichier il y a plus de 8000 lignes et cela est chronophage.

J'avais commencé par faire la formule =gauche() mais pareil, le matricule change de longueur donc pas pratique.

J'ai du mal à voir comment faire sans passer par du VBA ce que je ne maîtrise pas très bien sauf dans la compréhension de la lecture!!

Merci à quiconque s'intéressera au sujet ;)

Bonne journée




Configuration: Windows / Chrome 79.0.3945.130

4 réponses

Messages postés
12761
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 octobre 2020
2 041
Ah oui j'avais mal compris !
Alors en A3 :
=GAUCHE(DECALER(B3;EQUIV("*-*";DECALER(B3;;;10);0)-1;);TROUVE("-";DECALER(B3;EQUIV("*-*";DECALER(B3;;;10);0)-1;))-2)

Cdlmnt
Via
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
4
Merci Via bien pratique cette histoire de * pour prendre en compte n'importe quel type de caractère!

Je n'ai pas compris en revanche pourquoi 10 dans DECALER(B3;;;10)
Si tu as une petite explication simple ça ne me ferait pas de mal ;) (enfin si j'arrive à comprendre)

En tout cas thank you!! :)
Messages postés
12761
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 octobre 2020
2 041
Il faut rechercher dans les seules lignes en dessous la présence d'un matricule identifiable par le tiret donc on part de la cellule de la ligne courante B3 et on décale en hauteur de 10 pour chercher dans les 10 lignes en dessous
Bien sûr si10 n'est pas suffisant tu peux augmenter le nombre dans la formule
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
4
C'est très clair merci!!
Bonne soirée à toi :)
Messages postés
12761
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 octobre 2020
2 041
Bonjour Ymouf

Comme chauqe matricule est suivi d'un tiret :
=GAUCHE(B10;TROUVE("-";B10)-2)

Cdlmnt
Via
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
4
Bonjour via55 merci pour votre réponse
Savez vous également comment dupliquer le matricule en colonne A jusqu'au prochain matricule via formule ou vba?
Messages postés
12761
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
14 octobre 2020
2 041
En A10 :
=SIERREUR(SI(TROUVE("-";B10)>0;GAUCHE(B10;TROUVE("-";B10)-2);"");A9)
Messages postés
128
Date d'inscription
samedi 4 août 2012
Statut
Membre
Dernière intervention
22 septembre 2020
4
Pas exactement, ce que je voulais dire c'est comment faire pour que les données apparaissent à l'instar de la colonne D.

En fait tout ce qui est entre les cellules jaunes matricules sont des informations liées au matricule.

C'est à dire que je cherche à rattacher B3 avec l'information 10001, idem pour B4 à B9.

Puis B11 à B15 l'information à récupérer de A11 à A15 est 100402