[Excel VBA] Macro Spéciale pour concaténation

Fermé
Anne - 8 août 2007 à 15:28
Perio Messages postés 2 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 30 avril 2008 - 30 avril 2008 à 08:39
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
A voir également:

5 réponses

Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
8 août 2007 à 17:45
Voici la macro modifiée pour effacer les cellules d'origine:

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.
2
Merci Mille fois Papou93!
Tu me rends un immense service, comme quoi il faut toujours demander aux gens qui savent...
Merci encore

Anne
0
Perio Messages postés 2 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 30 avril 2008 > Anne
30 avril 2008 à 08:39
Bonjour à tous,

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.
0
champvi Messages postés 8 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 août 2007 2
8 août 2007 à 16:01
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
1
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 !!!
0
Papou93 Messages postés 146 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 5 juin 2012 59
8 août 2007 à 16:43
Bonjour Anne et Champvi,

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
1
Alors là, je suis scotchée !!!!!
Merci mille fois, dire que j'ai passé la journée à essayer de bidouiller des trucs....

Par contre pourrais tu m'effacer les cellules qui ont servi à la concaténation.

Merci d'avance Papou93 !!

Merci aussi à Champvi mais du coup j'ai pas essayé ta combine !

Anne
0
Perio Messages postés 2 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 30 avril 2008
29 avril 2008 à 17:28
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.
0
champvi Messages postés 8 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 8 août 2007 2
8 août 2007 à 16:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 75
8 août 2007 à 17:42
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 :)
0