Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction Convertir intelligente... est-ce possible ?

20 réponses
Avatar
Mclain
Bonjour !

Je viens vers vous car je n'arrive pas =C3=A0 trouver ma solution.
J'extrais environ une fois tous les 10 jours des donn=C3=A9es d'une base de=
donn=C3=A9es sous Excel.
Or j'ai une variable m=C3=A9tier dans laquelle je peux avoir 1, 2,3 ou 5 m=
=C3=A9tiers diff=C3=A9rents.
A1101 - M=C3=A9tier 1M1808 - M=C3=A9tier 2

Je veux utiliser une fonction "intelligente" pour convertir cette ligne dan=
s les cellules suivantes :
A1101
M=C3=A9tier 1
M1808=20
M=C3=A9tier 2
BXXXX
M=C3=A9tier 3

N'ayant pas d'espace entre m=C3=A9tier1 & Code m=C3=A9tier 2... je ne peux =
utiliser la fonction convertir...

Je ne sais pas si je suis clair ...

Merci pour votre aide

Mclain

10 réponses

1 2
Avatar
MichD
Le 2019-02-24 à 16:59, Mclain a écrit :
Le dimanche 24 février 2019 22:56:03 UTC+1, MichD a écrit :
Regarde ton classeur :
https://www.cjoint.com/c/IByv3aML2D7
MichD

Bonsoir,
Je viens de regarder... je ne veux pas filtrer la feuille... Je veux faire des tableaux de bord et c'est pour cela que je veux afficher une liste de résultats... La fonction rechercheV n'affichant qu'un résultat...
Cordialement

Tu veux un tableau de bord ? Tu le dis maintenant! Est-ce qu'il y avait
dans ton fichier un tableau de bord à titre d'exemple dans lequel tu
voulais obtenir ton résultat? Suis-je censé deviner ce que tu veux? De
quoi à l'air ton tableau de bord?
Je joins une dernière retouche que j'ai faite au fichier :
https://www.cjoint.com/c/IBywaFCx8G7
Désolé pour toi, mais je ne suis pas disponible avant mardi.
MichD
Avatar
MichD
J'ai essayé de remplacer dans ma colonne le Non renseigné par un vide...mais rien...


En A40 de la feuille MichD, il y a comme contenu :
Non renseigné
K2503 - Sécurité et surveillance privées
Avant que tu ajoutés "Non Renseigné" manuellement, qu'est-ce qu'il y
avait dans la cellule?
Seulement : K2503 - Sécurité et surveillance privées
Est-ce toujours ainsi? Je suppose que tu ne veux pas t'amuser à ajouter
des données manuellement?
Quand tu as seulement ceci dans une cellule de la colonne A
K2503 - Sécurité et surveillance privées
Que doit-il se passer? Que veux-tu obtenir comme résultat?
MichD
Avatar
mclain
Le mardi 19 mars 2019 02:33:49 UTC+1, MichD a écrit :
J'ai essayé de remplacer dans ma colonne le Non renseigné pa r un vide...mais rien...

En A40 de la feuille MichD, il y a comme contenu :
Non renseigné
K2503 - Sécurité et surveillance privées
Avant que tu ajoutés "Non Renseigné" manuellement, qu'est-ce qu 'il y
avait dans la cellule?
Seulement : K2503 - Sécurité et surveillance privées
Est-ce toujours ainsi? Je suppose que tu ne veux pas t'amuser à ajou ter
des données manuellement?
Quand tu as seulement ceci dans une cellule de la colonne A
K2503 - Sécurité et surveillance privées
Que doit-il se passer? Que veux-tu obtenir comme résultat?
MichD

Bonjour MichD,
En fait, ma sources de données a été modifée et qd j'ex trais mes données pour exploitation, j'ai parfois dans la céllule qui regroupe les infos, la mention Non renseignée qui ressort.
Dans la même cellule, il se peut que juste en dessous, j'ai une autre information que je dois extraire... en fait, si cela est possible, il convi endrait que la routine traite l'information NON RENSEIGNEE comme un K2503 - Sécurité et surveillance privées
Suis-je assez précis ?
Encore un grand merci pour le temps passé à m'aider !
Mclain
Avatar
MichD
Le 2019-03-19 à 04:34, a écrit :
il conviendrait que la routine traite l'information NON RENSEIGNEE comme un K2503 - Sécurité et surveillance privées
Suis-je assez précis ?

Non, fais un copier-coller de ce que tu peux retrouver dans ces cellules
sans autre texte comme j'ai fait. Si tu as quelques cas d'exception,
énumère-les. C'est le contenu exact de ces cellules dont j'ai besoin
sans autre texte autour.
EXEMPLE DE CAS SPÉCIAUX :
Contenu d'une cellule :
'-------------------------
Non Renseigné
K2503 - Sécurité et surveillance privées
'-------------------------
À part de ce cas, en as-tu d'autres?
TRAITEMENT: Ce cas spécial, son résultat :
en B, il n'y a rien, car il n'y a pas un code devant "Non Renseigné" et
dans la colonne C, il y a "Non Renseigné"...etc. Est-ce le résultat que
tu veux obtenir?
MichD
Avatar
MichD
Si tu n'as que cette exception, utilise plutôt cette procédure modifiée.
'--------------------------------------------
Sub test1()
Dim Rg As Range, C As Range, Col As Long
Dim X As Variant, Z As Variant, A As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
'Nom de l'onglet de la feuille à adapter
With Worksheets("MichD")
Set Rg = .Range("A2:A" & .Range("A" & .Cells.Rows.Count).End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
X = Split(C.Value, Chr(10))
Col = 1
For A = 0 To UBound(X)
Z = Split(X(A), "-")
If LCase(X(A)) = "non renseigné" Then
Col = Col + 1
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
Else
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
C.Offset(, Col) = Trim(Z(1))
Col = Col + 1
End If
Next
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'--------------------------------------------
MichD
Avatar
Mclain
Le mardi 19 mars 2019 11:15:10 UTC+1, MichD a écrit :
Si tu n'as que cette exception, utilise plutôt cette procédure modifiée.
'--------------------------------------------
Sub test1()
Dim Rg As Range, C As Range, Col As Long
Dim X As Variant, Z As Variant, A As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
'Nom de l'onglet de la feuille à adapter
With Worksheets("MichD")
Set Rg = .Range("A2:A" & .Range("A" & .Cells.Rows.Count).End(xlUp) .Row)
End With
For Each C In Rg
If C <> "" Then
X = Split(C.Value, Chr(10))
Col = 1
For A = 0 To UBound(X)
Z = Split(X(A), "-")
If LCase(X(A)) = "non renseigné" Then
Col = Col + 1
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
Else
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
C.Offset(, Col) = Trim(Z(1))
Col = Col + 1
End If
Next
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'--------------------------------------------
MichD

Bonsoir MichD,
Merci pour cette routine !
Cela fonctionne parfaitement
Est-ce que dans le code, on peut mettre plusieurs exceptions ?
Avatar
Mclain
Le mardi 19 mars 2019 21:29:40 UTC+1, Mclain a écrit :
Le mardi 19 mars 2019 11:15:10 UTC+1, MichD a écrit :
Si tu n'as que cette exception, utilise plutôt cette procédur e modifiée.
'--------------------------------------------
Sub test1()
Dim Rg As Range, C As Range, Col As Long
Dim X As Variant, Z As Variant, A As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
'Nom de l'onglet de la feuille à adapter
With Worksheets("MichD")
Set Rg = .Range("A2:A" & .Range("A" & .Cells.Rows.Count).End(xlU p).Row)
End With
For Each C In Rg
If C <> "" Then
X = Split(C.Value, Chr(10))
Col = 1
For A = 0 To UBound(X)
Z = Split(X(A), "-")
If LCase(X(A)) = "non renseigné" Then
Col = Col + 1
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
Else
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
C.Offset(, Col) = Trim(Z(1))
Col = Col + 1
End If
Next
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'--------------------------------------------
MichD

Bonsoir MichD,
Merci pour cette routine !
Cela fonctionne parfaitement
Est-ce que dans le code, on peut mettre plusieurs exceptions ?
Avatar
Mclain
Le mardi 19 mars 2019 21:29:40 UTC+1, Mclain a écrit :
Le mardi 19 mars 2019 11:15:10 UTC+1, MichD a écrit :
Si tu n'as que cette exception, utilise plutôt cette procédur e modifiée.
'--------------------------------------------
Sub test1()
Dim Rg As Range, C As Range, Col As Long
Dim X As Variant, Z As Variant, A As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
'Nom de l'onglet de la feuille à adapter
With Worksheets("MichD")
Set Rg = .Range("A2:A" & .Range("A" & .Cells.Rows.Count).End(xlU p).Row)
End With
For Each C In Rg
If C <> "" Then
X = Split(C.Value, Chr(10))
Col = 1
For A = 0 To UBound(X)
Z = Split(X(A), "-")
If LCase(X(A)) = "non renseigné" Then
Col = Col + 1
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
Else
C.Offset(, Col) = Trim(Z(0))
Col = Col + 1
C.Offset(, Col) = Trim(Z(1))
Col = Col + 1
End If
Next
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'--------------------------------------------
MichD

Bonsoir MichD,
Merci pour cette routine !
Cela fonctionne parfaitement
Est-ce que dans le code, on peut mettre plusieurs exceptions ?

SI je veux trouver l'inverse... ce que j'appelais un tableau de bord.
Mon code métier est unique mais, les appellations métiers qui s'y rapportent peuvent être mutltiples
Si dans une cellule, je tape le code K2204, je voudrais qu'il m'affiche la liste des appellations différentes se raccrochant à ce code saisi en listant la base compléte qui peut comporter plusieurs milliers de lignes...
j'ai trouvé sur le net différents possibilités, mais une ne fonctionne...
Je sais j'abuse MichD... mais j'essaie d'apprendre aussi!
Avatar
MichD
Cela fonctionne parfaitement
Est-ce que dans le code, on peut mettre plusieurs exceptions ?

Cela devrait être possible, encore faut-il que tu définisses ces exceptions!
MichD
Avatar
MichD
SI je veux trouver l'inverse... ce que j'appelais un tableau de bord.
Mon code métier est unique mais, les appellations métiers qui s'y rapportent peuvent être mutltiples
Si dans une cellule, je tape le code K2204, je voudrais qu'il m'affiche la liste des appellations différentes se raccrochant à ce code saisi en listant la base compléte qui peut comporter plusieurs milliers de lignes...
j'ai trouvé sur le net différents possibilités, mais une ne fonctionne...
Je sais j'abuse MichD... mais j'essaie d'apprendre aussi!

Suite à l'application de la procédure déjà donnée, tu peux regrouper sur
seulement 2 colonnes les numéros d'emploi et leur description en faisant
un copier-coller des données pour les répartir sur 2 colonnes. Excel a
au-delà 1,000,000 lignes. Par la suite, il ne reste plus qu'à appliquer
un filtre automatique ou élaboré et tu vas obtenir ce que tu désires.
MichD
1 2