1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| Option Explicit
'*****************************************************************************************
' Déclaration des variables
'*****************************************************************************************
Public Tablo(1 To 15) As String
Public Lign_F1, Lign_RC, I As Long
'*****************************************************************************************************
' Regroup_Livres Macro de lancement principale
'*****************************************************************************************************
Sub Regroup_Livres()
' je crée une feuille résutat en espérant que le nom n'existe pas sinon il faudra penser à le gérer
Sheets.Add After:=Sheets(Sheets.Count)
Application.ActiveSheet.Name = "Resultat_Concat"
Lign_F1 = 1 ' N°ligne de la feuille : Feuil1
Lign_RC = 1 ' N°ligne de la feuille : Resultat_Concat
' saisie des entêtes
Sheets("Feuil1").Select
Call Init_tab ' Appel de la procédure d'initialisation du tableau
Call Charg_Tab ' Appel de la procédure de chargement du tableau
Call copi_tablo ' Appel de la procédure de recopie des données
Lign_F1 = Lign_F1 + 1
' traitement des données
Call Init_tab
Call Charg_Tab
Lign_F1 = Lign_F1 + 1
Do While Cells(Lign_F1, 1).Value <> ""
Sheets("Feuil1").Select
If Cells(Lign_F1, 1).Value = Tablo(1) Then
If Tablo(7) = "" And Cells(Lign_F1, 9).Value <> "" Then
Tablo(7) = Cells(Lign_F1, 9).Value
End If
If Tablo(10) = "" And Cells(Lign_F1, 13).Value <> "" Then
Tablo(10) = Cells(Lign_F1, 13).Value
End If
If Cells(Lign_F1, 3).Value <> "" Then
If Tablo(12) = "" Then
Tablo(12) = Cells(Lign_F1, 3).Value
Else
If Tablo(13) = "" Then
Tablo(13) = Cells(Lign_F1, 3).Value
Else
If Tablo(14) = "" Then
Tablo(14) = Cells(Lign_F1, 3).Value
Else
If Tablo(15) = "" Then
Tablo(15) = Cells(Lign_F1, 3).Value
Else
MsgBox "Plus de 4 auteurs non géré"
End If
End If
End If
End If
End If
Else
Call copi_tablo
Call Init_tab
Call Charg_Tab
End If
Lign_F1 = Lign_F1 + 1
Loop
Call copi_tablo
End Sub
'*****************************************************************************************************
' Init_tab Macro de vidage du contenu du tableau en mémoire
'*****************************************************************************************************
Sub Init_tab()
' Procédure d'initialisation du tableau (à vide)
For I = 1 To 15
Tablo(I) = ""
Next I
End Sub
'*****************************************************************************************************
' Charg_Tab Macro de Chargement des données sur la feuille dans Tablo pour faire des regroupements
'*****************************************************************************************************
Sub Charg_Tab()
' Procédure de chargement du tableau
Sheets("Feuil1").Select
Tablo(1) = Cells(Lign_F1, 1).Value
Tablo(2) = Cells(Lign_F1, 2).Value
Tablo(3) = Cells(Lign_F1, 4).Value
Tablo(4) = Cells(Lign_F1, 5).Value
Tablo(5) = Cells(Lign_F1, 6).Value
Tablo(6) = Cells(Lign_F1, 7).Value
Tablo(7) = Cells(Lign_F1, 9).Value
Tablo(8) = Cells(Lign_F1, 10).Value
Tablo(9) = Cells(Lign_F1, 11).Value
Tablo(10) = Cells(Lign_F1, 13).Value
Tablo(11) = Cells(Lign_F1, 14).Value
Tablo(12) = Cells(Lign_F1, 3).Value
End Sub
'*****************************************************************************************************
' copi_tablo Macro de copie des données regroupées dans la nouvelle feuille
'*****************************************************************************************************
Sub copi_tablo()
' Procédure de copie du tableau en mémoire vers la feuille "Resultat_Concat"
I = 1
Sheets("Resultat_Concat").Select
For I = 1 To 15
Cells(Lign_RC, I) = Tablo(I)
Next I
Lign_RC = Lign_RC + 1
End Sub |
Partager