1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Sub Trans()
Const iNbCarNomTable As Integer = 10 'Nombre de caractères maxi pour un nom de table Access
Sheets("Feuil1").Range("A1").Select
For c = 1 To Range("A1").End(xlToRight).Column
'--- Ce nom n'est-il pas trop long ?
' > Si la chaine est trop longue ne garde que les (iNbCarNomTable - 6) caractéres de gauche
' "-6" ?
' Oui, sous 2007, il y a 16375 colonnes qui avec le "-" font 6 caractères
' donc on va retirer 6 caractères de plus au cas ou toutes les colonnes porteraient le même nom
' pour ne pas avoir de problème de renommage avec la seconde boucle
' Ca ne doit pas poser de problème s'il y a déjà x caractères identiques d"en avoir 6 de moins
If Len(Cells(1, c).Value) > iNbCarNomTable - 6 Then
Cells(1, c).Value = Left$(Cells(1, c).Value, iNbCarNomTable - 6)
End If
'--- Vérification si le nom n'existe pas déjà (tronqué ou non) : on relit les colonnes précédantes
For C_ant = 1 To c - 1
'--- Si le nom existe déjà
If Cells(1, c).Value = Cells(1, C_ant).Value Then
Cells(1, c).Value = Cells(1, c).Value & "-" & c 'c=Nombre, car on peut faire >26 colonnes identiques
End If
Next C_ant
Next c
End Sub |
Partager