Un petit programme sous excel

Résolu
Qhes Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -  
Qhes Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je ne suis pas douée du tout en informatique. Je viens tout juste d'apprendre qu'il y avait des choses nommées macro pouvant réaliser des programme sous excel.

Je ne savais pas avant ce matin ni que ca existait ni que votre forum existait...

j'ai une liste de 15 000 lignes sous excel
en colonne A il y a un code a 9 caractère (qu'on va nommer code A)
en colonne B il y a un autres code a 6 ou 8 caractère (qu'on va nommer code B)

Le code de la colonne a peut etre répété deux ou trois fois avec des code en colonne B diférents.

Le truc qui serait vraiment génial ca serait que dès qu'il y a deux code A et A1
dans la colonne B correspondant on ajoute un alt+esp et qu'on ecrive le code B1 en dessous du code B ou vice versa.

Exemple :
A06200119 - ZUA035
A06200119 - ZUA036
A06200121 - ZUA037
A06200122 - ZUA038
A06200122 - ZUA045
A06200125 - ZUA055
A06200125 - ZUA065
A06200126 - ZUA066

Ca devrait donner :
A06200119 - ZUA035
- ZUA036
A06200121 - ZUA037
A06200122 - ZUA038
- ZUA045
A06200125 - ZUA055
- ZUA065
A06200126 - ZUA066
A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

Si j'ai compris ta question tu peux essayer cette macro dans ta feuille concernée ou dans un module (mode d'emploi)
Public Sub regroupe()
Dim lig As Long
For lig = 1 To UsedRange.Rows.Count
    If Cells(lig, 1) = Cells(lig + 1, 1) Then
        Cells(lig, 2) = Cells(lig, 2) & Chr(10) & Cells(lig + 1, 2)
        Rows(lig + 1).Delete
        If Cells(lig + 1, 1) = "" Then Exit For
        lig = lig - 1
    End If
Next lig
End Sub
-1
Qhes Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   29
 
Je viens d'ajouter la macro au fichier et ca bog

voila le lien avec la modif au cas ou ca peux aider a comprendre

http://www.cijoint.fr/cjlink.php?file=cj200809/cijXOaRp7A.xls

Vraiment merci de m'aider.
-1
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour


Comme tu as mis la macro dans un module, faut qualifier la feuille en modifiant cette ligne
For lig = 1 To ActiveSheet.UsedRange.Rows.Count
-1
Qhes Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   29
 
Tu es absoluement génial :)

Merci beaucoup

Dis, est ce que c'est possible de modifier la macro pour que ca fonctionne si la colonne A se trouve en colonne B et la colonne B se trouve en colonne F?

C'est fou tout ce qu'on peu faire avec Excel... enfin tout ce que certains peuvent faire... c'est pas donné a tout le monde...
-1

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

Posez votre question
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
bonjour

L'adressage que j'ai utilisé Cells(lig, 1) permet bien sûr de le faire.

le 1 est le numéro de colonne et donc si tu veux la même chose paramétré tu peux faire ainsi :
Public Sub regroupe()
Dim lig As Long
Const col1 = 2 ' colonne B
Const col2 = 6 ' colonne F
For lig = 1 To ActiveSheet.UsedRange.Rows.Count
    If Cells(lig, col1) = Cells(lig + 1, col1) Then
        Cells(lig, col2) = Cells(lig, col2) & Chr(10) & Cells(lig + 1, col2)
        Rows(lig + 1).Delete
        If Cells(lig + 1, col1) = "" Then Exit For
        lig = lig - 1
    End If
Next lig
End Sub

Il suffit de changer au début le numéro de colonne et cela fonctionne où tu veux.
-1
Qhes Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   29
 
Euh... je viens de m'apercevoir que je ne t'avais pas encore dit bonjour...

Donc euh... bonjour...

Désolé...


Mais MERCIIIII beaucoup ca marche c'est génialement formidable :)
-1