[VBA Excel] Macro Recherche de caractères
Anne
-
Anne -
Anne -
Bonjour aux pros de l'info!
J'ai déjà envoyé un message hier et les réponses m'ont entièrement satisfaite. Donc je retente une question à des âmes charitables qui auraient pitié d'une pauvre néophyte...
J'ai un tableau Excel du genre
Pour chaque protéine, je voudrais savoir si elle contient un ou plusieurs peptide de la liste, lequel et la position du premier caractère, c'est à dire une réponse du genre
Merci infiniment par avance à celui ou celle qui pourra m'aider
Anne
J'ai déjà envoyé un message hier et les réponses m'ont entièrement satisfaite. Donc je retente une question à des âmes charitables qui auraient pitié d'une pauvre néophyte...
J'ai un tableau Excel du genre
protéines peptides ABCDEF DE GHIJKLAB ABC ... IJ ... ....
Pour chaque protéine, je voudrais savoir si elle contient un ou plusieurs peptide de la liste, lequel et la position du premier caractère, c'est à dire une réponse du genre
protéines Réponse1 Position Réponse2 Position .... ABCDEF DE 4 ABC 1 .... GHIJKLAB IJ 3 ... ... ... ....
Merci infiniment par avance à celui ou celle qui pourra m'aider
Anne
A voir également:
- [VBA Excel] Macro Recherche de caractères
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
4 réponses
Bonjour,
Suggestion :
Lupin
Suggestion :
Option Explicit Sub ChercheReptides() Dim PlageP As Range, PlageR As Range Dim Cellule As Range, Boite As Range Dim Position As Long, Adresse As Long Set PlageP = Range("A2:A" & Range("A2:A65536").End(xlDown).Row) Set PlageR = Range("B2:B" & Range("B2:B65536").End(xlDown).Row) Adresse = 3 For Each Cellule In PlageP For Each Boite In PlageR Position = InStr(1, Cellule.Value, Boite.Value, vbTextCompare) If (Position > 0) Then Cellule.Offset(0, Adresse).Value = Boite.Value Cellule.Offset(0, Adresse + 1).Value = Position Adresse = (Adresse + 2) End If Next Boite Next Cellule End Sub '
Lupin
re :
La connaissance croit avec le partage comme le dit si bien M. Jean-Claude Bellamy qui m'a beaucoup
appris sans me connaître. Bien que peut répendu, je pense que nous sommes ici pour servir et non
pour être servi. Donner sans attente est pour ma part une marque de sagesse.
Ce fut un plaisir comme toujours.
Arsène Lupin
Gentleman (non cambrioleur)
Pour vour servir :-)
@+
La connaissance croit avec le partage comme le dit si bien M. Jean-Claude Bellamy qui m'a beaucoup
appris sans me connaître. Bien que peut répendu, je pense que nous sommes ici pour servir et non
pour être servi. Donner sans attente est pour ma part une marque de sagesse.
Ce fut un plaisir comme toujours.
Arsène Lupin
Gentleman (non cambrioleur)
Pour vour servir :-)
@+
Salut,
tu peux utliser des formules
ce qui donne
tu peux utliser des formules
prot REP1 POS REP2 POS ABCDE DE =CHERCHE(B2;A2;1) ABC =CHERCHE(D2;A2;1) GHIJKLM HI =CHERCHE(B3;A3;1) LM =CHERCHE(D3;A3;1)
ce qui donne
prot REP1 POS REP2 POS ABCDE DE 4 ABC 1 GHIJKLM HI 2 LM 6
Bonjour Anne, Il te faut utliser la fonction de recherche 'Instr' :
En considérant la réponse 1 en colonne2, la position en colonne 3, la réponse en colonne 4, la position en colonne 5, ...
Il te sera facile d'adapter les n° de colonnes dans l'instruction 'Offset(Ligne, Colonne)' en fonction de tes besoins.
Pour essai, j'ai saisi cette ligne dans l'événement 'SelectionChange' de la feuille de calcul, avec pour condition que la cellule sélectionnée est bien dans les colonnes 3 ou 5.
Il est facile d'automatiser la procédure dans une boucle de balayage d'un zone précise.
Cordialement.
En considérant la réponse 1 en colonne2, la position en colonne 3, la réponse en colonne 4, la position en colonne 5, ...
ActiveCell= InStr(Range("a" & ActiveCell.Row).Value, ActiveCell.Offset(0, -1).Value)
Il te sera facile d'adapter les n° de colonnes dans l'instruction 'Offset(Ligne, Colonne)' en fonction de tes besoins.
Pour essai, j'ai saisi cette ligne dans l'événement 'SelectionChange' de la feuille de calcul, avec pour condition que la cellule sélectionnée est bien dans les colonnes 3 ou 5.
Il est facile d'automatiser la procédure dans une boucle de balayage d'un zone précise.
Cordialement.
C'est super, j'ai juste rajouté Adresse=3 après Next boite pour qu'il revienne au même endroit à chaque protéine.
C'est vraiment incroyable ce système de forum. Je suis impressionnée par votre rapidité et votre gentillesse. ça vous amuse ? ça vous détend ? vous aimez rendre service ? Quelle que soit votre motivation, bravo !
En tout cas Merci encore à papou93 pour hier et aujourd'hui (j'ai choisi la solution de facilité avec Lupin) et Merci encore à Lupin pour sa macro qui répond exactement à mes attentes...
A bientôt peut être !
Anne