Rechercher et extraire des nombres dans différent texte
Tableur_7399
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Frenchie83 Messages postés 2240 Date d'inscription Statut Membre Dernière intervention -
Frenchie83 Messages postés 2240 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je tente de trouver une façon d'extraire le nombre qui se trouve devant les caractères "pi", "pi ASL" ou "pi AGL". Mon mon problème est que les textes ont été rédigés de différente façon et que le nombre peu varier en nombre de caractères (entre 100 et 20 000) et en format, ex; 1 000 ou 1000.
Exemple 1:
2020-08-25 - Le pilote d'un Bell 225B de 123 Helicopters Inc. (C-ABC) de l'héliport "Quelque part"(ABC), AB (CAXY), en vol local, a signalé avoir vu un drone décoller sur sa gauche et plus bas 2500 pi. La Gendarmerie royale du Canada (GRC) a été informée. Le gestionnaire de quart a été avisé.
Exemple 2:
2023-10-40 - Un Cessna 172S exploité par ABC inc (C-ABCD) dans le circuit vers la piste XY de l?aéroport d?ARLONGTON, BC (CABC), a signalé avoir aperçu un avion modèle rouge à environ 0,5 mille au sud du seuil de la piste 25, à une altitude d?environ 700 pi ASL.
J'aimerais extraire en 2 cellules a) le nombre et b) le type (pi, ASL ou AGL)
Merci!
Je tente de trouver une façon d'extraire le nombre qui se trouve devant les caractères "pi", "pi ASL" ou "pi AGL". Mon mon problème est que les textes ont été rédigés de différente façon et que le nombre peu varier en nombre de caractères (entre 100 et 20 000) et en format, ex; 1 000 ou 1000.
Exemple 1:
2020-08-25 - Le pilote d'un Bell 225B de 123 Helicopters Inc. (C-ABC) de l'héliport "Quelque part"(ABC), AB (CAXY), en vol local, a signalé avoir vu un drone décoller sur sa gauche et plus bas 2500 pi. La Gendarmerie royale du Canada (GRC) a été informée. Le gestionnaire de quart a été avisé.
Exemple 2:
2023-10-40 - Un Cessna 172S exploité par ABC inc (C-ABCD) dans le circuit vers la piste XY de l?aéroport d?ARLONGTON, BC (CABC), a signalé avoir aperçu un avion modèle rouge à environ 0,5 mille au sud du seuil de la piste 25, à une altitude d?environ 700 pi ASL.
J'aimerais extraire en 2 cellules a) le nombre et b) le type (pi, ASL ou AGL)
Merci!
Configuration: Windows / Chrome 78.0.3904.108
A voir également:
- Rechercher et extraire des nombres dans différent texte
- Extraire une video youtube - Guide
- Extraire texte d'une image - Guide
- Extraire le son d'une vidéo - Guide
- Rechercher ou entrer l'adresse - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
3 réponses
Bonjour,
Autre proposition avec des fonctions personnalisées
le fichier en exemple:
https://mon-partage.fr/f/xvXjF8LO/
Pour les nombres en B2, et à tirer vers le bas
Pour les types en C2 et à tirer vers le bas
Le code utilisé (dans un module standard):
Cdlt
Autre proposition avec des fonctions personnalisées
le fichier en exemple:
https://mon-partage.fr/f/xvXjF8LO/
Pour les nombres en B2, et à tirer vers le bas
=Extract_Nb(A2)
Pour les types en C2 et à tirer vers le bas
=Extract_Type(A2)
Le code utilisé (dans un module standard):
Dim Pos As Long Dim Cell As String, n As String, x As String Function Extract_Type(Texte As String) As String Types = "PI." Pos = InStr(1, Texte, Types, 1) If Pos <> 0 Then Extract_Type = "PI" ElseIf Pos = 0 Then Types = "PI ASL" Pos = InStr(1, Texte, Types, 1) Extract_Type = Types ElseIf Pos = 0 Then Types = "PI AGL" Pos = InStr(1, Texte, Types, 1) Extract_Type = Types Else Extract_Type = "" End If End Function Function Extract_Nb(Texte As String) As String Cell = Texte Types = "PI." Pos = InStr(1, Texte, Types, 1) If Pos <> 0 Then recup_Nombre Extract_Nb = n ElseIf Pos = 0 Then Types = "PI ASL" Pos = InStr(1, Texte, Types, 1) recup_Nombre Extract_Nb = n ElseIf Pos = 0 Then Types = "PI AGL" Pos = InStr(1, Texte, Types, 1) recup_Nombre Extract_Nb = n Else Extract_Nb = "" End If End Function Sub recup_Nombre() n = "" For i = Pos - 2 To 1 Step -1 x = Mid(Cell, i, 1) If x <> " " Then n = x & n Else: Exit Sub End If Next i End Sub
Cdlt
Bonjour à tous
Frenchie ta fonction personnalisée ne traite pas le cas de nombres écrit sous la forme 2 500 comme il peut y en avoir d'après le demandeur
Pour pallier cela on peut remplacer la Sub recup_Nombre par celle-ci :
Cdlmnt
Via
Frenchie ta fonction personnalisée ne traite pas le cas de nombres écrit sous la forme 2 500 comme il peut y en avoir d'après le demandeur
Pour pallier cela on peut remplacer la Sub recup_Nombre par celle-ci :
Sub recup_Nombre() n = "" For i = Pos - 2 To 1 Step -1 x = Mid(Cell, i, 1) If x = " " Or Asc(x) > 47 And Asc(x) < 58 Then n = x & n Else: Exit Sub End If Next i End Sub
Cdlmnt
Via