Exel extraction verticale ciblée
boris 07
Messages postés
4
Statut
Membre
-
Armojax Messages postés 1916 Date d'inscription Statut Membre Dernière intervention -
Armojax Messages postés 1916 Date d'inscription Statut Membre Dernière intervention -
bonjour à tous,
je souhaite avoir de l'aide sur un sujet que je n'arrive par à resoudre
j'ai créé un tableau sur exel d'une centaine de lignes et d'environ 10 colonnes
dans les cellules d'une colonne, j'ai marqué differentes initiales de personne (2à3 lettres) séparés par des virgules. cela donne: " bv, dg, jk, hy, re, ty, kl, ....". mais toutes les cellules de cette colonne ne contienne pas les meme initiale (en lettre et en nombre)
dans un feuille séparé, je souhaite que Exel recherche verticalement dans la colonne des intiales, les cellules qui contiennent par exemple les initiales RE et me donne le contenu des cellules qui sont sur la meme ligne
est ce possible? comment le faire?
dans l'attente de vous lire
merci d'avance
je souhaite avoir de l'aide sur un sujet que je n'arrive par à resoudre
j'ai créé un tableau sur exel d'une centaine de lignes et d'environ 10 colonnes
dans les cellules d'une colonne, j'ai marqué differentes initiales de personne (2à3 lettres) séparés par des virgules. cela donne: " bv, dg, jk, hy, re, ty, kl, ....". mais toutes les cellules de cette colonne ne contienne pas les meme initiale (en lettre et en nombre)
dans un feuille séparé, je souhaite que Exel recherche verticalement dans la colonne des intiales, les cellules qui contiennent par exemple les initiales RE et me donne le contenu des cellules qui sont sur la meme ligne
est ce possible? comment le faire?
dans l'attente de vous lire
merci d'avance
A voir également:
- Exel extraction verticale ciblée
- Exel 2013 - Télécharger - Tableur
- Ps5 verticale - Accueil - Guide jeu vidéo
- Barre verticale clavier ✓ - Forum MacOS
- Liste deroulante exel - Guide
- Svp faire une barre verticale avec clavier - Forum Clavier
4 réponses
Bonjour boris 07,
Je ne pense pas qu'Excel sache faire ça. Ça nécessite une analyse des chaînes de caractères.
Evidemment, on peut écrire quelque chose en VBA, mais ce genre de truc sur les chaînes, sans être compliqué, n'est pas franchement passionnant...
Avant d'en passer par là, il faut se demander si la structure choisie pour les données est la plus adaptée. Déjà d'abord...
Je ne pense pas qu'Excel sache faire ça. Ça nécessite une analyse des chaînes de caractères.
Evidemment, on peut écrire quelque chose en VBA, mais ce genre de truc sur les chaînes, sans être compliqué, n'est pas franchement passionnant...
Avant d'en passer par là, il faut se demander si la structure choisie pour les données est la plus adaptée. Déjà d'abord...
Hello boris 07,
Réflexion faite, je t'ai fait une petite macro qui devrait faire ce que tu veux.
Il te suffit d'adapter quelques paramètres, dans les lignes comprises entre les lignes "======" :
- le nom de la feuille où se trouvent tes initiales
- le nom de la feuille résultat
- le n° de la première ligne détail de la feuille à analyser (après les lignes d'entête)
- et idem pour la feuille résultat
- le n° de la colonne où se trouvent les initiales (A=1, B=2, etc.)
Si tu ne connais pas trop VBA, pour installer cette macro :
- dans Excel, fais : Outils / Macro / Visual Basic Editor
- Insertion / Module
Dans le cadre à droite, copie la macro. C'est tout.
Pour la lancer :
- Soit tu fais :
Outils / Macro / Macros...
Sélectionner la macro, et bouton Exécuter
Soit tu te crées un appel par touche :
- Outils / Macro / Macros...
- Sélectionner la macro, puis bouton Options...
- Touche de raccourci : taper une lettre majuscule (M comme macro, par exemple)
Ensuite, pour lancer la macro, il te suffit de faire CTRL+MAJ+M
Voici la macro :
Réflexion faite, je t'ai fait une petite macro qui devrait faire ce que tu veux.
Il te suffit d'adapter quelques paramètres, dans les lignes comprises entre les lignes "======" :
- le nom de la feuille où se trouvent tes initiales
- le nom de la feuille résultat
- le n° de la première ligne détail de la feuille à analyser (après les lignes d'entête)
- et idem pour la feuille résultat
- le n° de la colonne où se trouvent les initiales (A=1, B=2, etc.)
Si tu ne connais pas trop VBA, pour installer cette macro :
- dans Excel, fais : Outils / Macro / Visual Basic Editor
- Insertion / Module
Dans le cadre à droite, copie la macro. C'est tout.
Pour la lancer :
- Soit tu fais :
Outils / Macro / Macros...
Sélectionner la macro, et bouton Exécuter
Soit tu te crées un appel par touche :
- Outils / Macro / Macros...
- Sélectionner la macro, puis bouton Options...
- Touche de raccourci : taper une lettre majuscule (M comme macro, par exemple)
Ensuite, pour lancer la macro, il te suffit de faire CTRL+MAJ+M
Voici la macro :
Sub Filtre()
Dim I As Integer ' pour recherche à l'intérieur de la chaine
Dim I_Orig As Long ' première ligne à analyser
Dim I_Cour As Long ' indice courant de balayage des lignes
Dim I_Dest As Long ' première ligne du résultat
Dim NbLig As Long ' nombre de ligne d'une feuille
Dim Col As Integer ' n° de la colonne à analyser
Dim Critère As String ' initiales saisies
Dim Chaine As String ' chaine à analyser
Dim FI As Worksheet ' feuille à analyser
Dim FO As Worksheet ' feuille résultat
'=====================================
Set FI = Sheets("Feuil1") ' à adapter
Set FO = Sheets("Feuil2") ' "
I_Orig = 4 ' "
I_Dest = 8 ' "
Col = 6 ' "
'=====================================
Critère = InputBox("Entrez les initiales à rechercher.", "RECHERCHE")
If Critère = "" Then Exit Sub
Application.ScreenUpdating = True
FO.Activate
NbLig = Cells(65536, 1).End(xlUp).Row
Range(Cells(I_Dest, 1), Cells(NbLig, 1)).EntireRow.Cells.ClearContents
NbLig = FI.Cells(65536, Col).End(xlUp).Row
For I_Cour = I_Orig To NbLig
Chaine = FI.Cells(I_Cour, Col).Value
For I = 1 To Len(Chaine) - Len(Critère) + 1
If UCase(Mid(Chaine, I, Len(Critère))) = UCase(Critère) Then
FI.Cells(I_Cour, Col).EntireRow.Copy
Cells(I_Dest, 1).Select
ActiveSheet.Paste
I_Dest = I_Dest + 1
Exit For
End If
Next I
Next I_Cour
Application.ScreenUpdating = True
End Sub