[Excel VBA] Macro Spéciale pour concaténation
Anne
-
Perio Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Perio Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Besoin d'aide !!
Bonjour à tous, je vois qu'un certain nombre d'entres vous maitrisent Excel et le VBA, alors j'aurais besoin de votre aide car je suis biologiste et mes connaissances en informatique sont limitées...
J'ai un tableau excel du genre
>nomproteine1
ABC
DE
>nomproteine2
GHIJ
KLM
NO
>etc
J'aimerai concaténer la séquence de chacune des protéines dans une cellule (soit dessous, soit à côté du nom, de préférence) et effacer les cellules ayant servi à la concaténation pour avoir :
>nomproteine1
ABCDE
>nomproteine2
GHIJKLMNO
>etc
En sachant que, (et oui il faut bien compliquer, c'est pour ça que je me casse les dents dessus) la séquence est de taille variable et le seul point commun est le > en début de chaque nouveau nom...
Celui qui arrivera à me pondre quelquechose aura droit à.....une deuxième question !!
Merci d'avance !
Anne
Bonjour à tous, je vois qu'un certain nombre d'entres vous maitrisent Excel et le VBA, alors j'aurais besoin de votre aide car je suis biologiste et mes connaissances en informatique sont limitées...
J'ai un tableau excel du genre
>nomproteine1
ABC
DE
>nomproteine2
GHIJ
KLM
NO
>etc
J'aimerai concaténer la séquence de chacune des protéines dans une cellule (soit dessous, soit à côté du nom, de préférence) et effacer les cellules ayant servi à la concaténation pour avoir :
>nomproteine1
ABCDE
>nomproteine2
GHIJKLMNO
>etc
En sachant que, (et oui il faut bien compliquer, c'est pour ça que je me casse les dents dessus) la séquence est de taille variable et le seul point commun est le > en début de chaque nouveau nom...
Celui qui arrivera à me pondre quelquechose aura droit à.....une deuxième question !!
Merci d'avance !
Anne
A voir également:
- [Excel VBA] Macro Spéciale pour concaténation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
5 réponses
Voici la macro modifiée pour effacer les cellules d'origine:
Cordialement.
Sub NomProteine() With Sheets(1) For n = 1 To .Range("a65536").End(xlUp).Row If Left$(Cells(n, 1), 1) = ">" Then lg = n If Not Left$(Cells(n, 1), 1) = ">" And lg > 0 Then Cells(lg, 2) = Cells(lg, 2) & Cells(n, 1) Cells(n, 1) = "" End If Next End With End Sub
Cordialement.
tu marques dans une case '=C1 & D1' par exemple. Ca fait ca betement mais ca concatene 2 cases.
pour plus complexe faut toucher à VBA... donc tente avec ca d'abord
pour plus complexe faut toucher à VBA... donc tente avec ca d'abord
Merci Champvi mais il faut justement que je passe en VBA parce que j'ai environ 1000 entrées !!!
J'arrive bien à concaténer avec la fonction concatène d'excel mais je peux pas y passer la nuit...une petite macro serait pas mal ! Peut être avec la fonction join mais j'ai pas réussi à l'utiliser.
Please help !!!
J'arrive bien à concaténer avec la fonction concatène d'excel mais je peux pas y passer la nuit...une petite macro serait pas mal ! Peut être avec la fonction join mais j'ai pas réussi à l'utiliser.
Please help !!!
Bonjour Anne et Champvi,
Voici une macro à insérer dans un module de code :
Cette macro concatène la séquence des protéines dans la cellule immédiatement à droite du nom.
Elle fonctionne quelle que soit la ligne de départ de la liste.
Il est facile d'adapter la position des colonnes en fonction des besoins.
Espérant avoir été utile.
Cordialement
Voici une macro à insérer dans un module de code :
Sub NomProteine() With Sheets(1) For n = 1 To .Range("a65536").End(xlUp).Row If Left$(Cells(n, 1), 1) = ">" Then lg = n If Not Left$(Cells(n, 1), 1) = ">" And lg > 0 Then Cells(lg, 2) = Cells(lg, 2) & Cells(n, 1) Next End With End Sub
Cette macro concatène la séquence des protéines dans la cellule immédiatement à droite du nom.
Elle fonctionne quelle que soit la ligne de départ de la liste.
Il est facile d'adapter la position des colonnes en fonction des besoins.
Espérant avoir été utile.
Cordialement
Bonjour à tous,
Je ne parviens pas à utiliser cette macro... Où, dans le code que nous a gentiment indiqué Papou93, faut-il changer quelque chose pour qu'il soit utilisable par tous ? C'est la valeur "a65536" ?
Mon besoin concerne la concaténation de colonnes dans un ficher SIREN de l'INSEE contenant 11 000 enregistrements : je souhaite avoir dans une colonne créée pour cela (A1 par ex), des adresses d'entreprises (A0) complètes formées d'éléments situés dans des colonnes individualisées (A2, A3, A4, etc).
Merci à vous pour toute tentative d'explication !
Pierre.
Je ne parviens pas à utiliser cette macro... Où, dans le code que nous a gentiment indiqué Papou93, faut-il changer quelque chose pour qu'il soit utilisable par tous ? C'est la valeur "a65536" ?
Mon besoin concerne la concaténation de colonnes dans un ficher SIREN de l'INSEE contenant 11 000 enregistrements : je souhaite avoir dans une colonne créée pour cela (A1 par ex), des adresses d'entreprises (A0) complètes formées d'éléments situés dans des colonnes individualisées (A2, A3, A4, etc).
Merci à vous pour toute tentative d'explication !
Pierre.
tu peux tenter un truc du style
ActiveSheet.Range("E1").Select 'se place en E1
do while activecell.value = "" 'boucle tant que la cellule est pas vide
activecell.value = activecell.offset(0,-2) & activecell.offset (0,-1) 'concatene les 2 cases de gauche
activecell.offset (1,0).select 'se depalce d'une case vers le bas
loop
ActiveSheet.Range("E1").Select 'se place en E1
do while activecell.value = "" 'boucle tant que la cellule est pas vide
activecell.value = activecell.offset(0,-2) & activecell.offset (0,-1) 'concatene les 2 cases de gauche
activecell.offset (1,0).select 'se depalce d'une case vers le bas
loop
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ou sans utiliser VB, disons qu'on a le tableau suivant :
A1 : nomprotéine1
A2...Ax : les trucs gens "ABC", "DE" et compagnie
Ax+1 : nomprotéine2
En Bx-1 : =Ax & Bx
Ensuite il suffit de développer en remontant jusqu'à la ligne du nom. (En B1 : =A2 & B2)
Bien sûr c'est faisable en VB, mais cette solution l'écarte :)
A1 : nomprotéine1
A2...Ax : les trucs gens "ABC", "DE" et compagnie
Ax+1 : nomprotéine2
En Bx-1 : =Ax & Bx
Ensuite il suffit de développer en remontant jusqu'à la ligne du nom. (En B1 : =A2 & B2)
Bien sûr c'est faisable en VB, mais cette solution l'écarte :)
Tu me rends un immense service, comme quoi il faut toujours demander aux gens qui savent...
Merci encore
Anne
Je n'arrive pas à utiliser ce code pour mes propres besoins...
Mon besoin concerne la concaténation de colonnes dans un ficher SIREN de l'INSEE contenant 11 000 enregistrements : je souhaite avoir dans une colonne créée pour cela (A1 par ex), des adresses d'entreprises (A0) complètes formées d'éléments situés dans des colonnes individualisées (A2, A3, A4, etc).
Merci à vous pour toute tentative d'explication !
Pierre.