Bonjour,

Je me permets de vous contacter car j’ai remarqué un comportement bizarre dans une de mes feuilles Excel
J’ai fait une macro VBA pour faire une copie de colonnes dans un onglet, il arrive que lors de cet ajout de colonnes j’obtienne l’erreur de dépassement du nombre de colonnes autorisés par XL2003. Cependant cette erreur peut arriver alors qu’il reste suffisamment de colonnes.
Si je fais une sauvegarde avant ajout des colonnes par Workbooks.save ou manuellement je n’ai pas d’erreur.
Comme cette sauvegarde sur mon portable DELL (2GHz 2GO ram, fichier Excel 2MO) demande plus de 13 secondes, je cherche un moyen d’éviter cette manip.
Je met ci-dessous le message d’erreur et le code de la macro.
D’avance merci de votre retour sur le sujet, peut être un moyen de mettre en évidence un comportement non répertorié.
Cordialement
Guillaume FAGOT
Message d’erreur :
Pour éviter la perte de données,Microsoft Office Excel ne peut pas déplacer de cellules non vides
en dehors de la feuille.
Essayer de localiser la dernièree cellule non vide en appuyant sur CTRL+FIN et supprimez ou effacez
toutes les cellules situées entre la dernière cellule et la fin de vos données. Puis sélectionnez
la cellule A1 et enregistrer votre classeur pour redéfinir la dernière cellule utilisée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
Sub NlleTypologie()
'
'  ajout d une nouvelle typologie dans le calcul du coût integration
'
Dim FeuillePlanning As Worksheet
Dim fin_col_a_copier, deb_col_a_copier As Long
Dim fin, deb, nouvelle_feuille, feuille_precedente As String
Dim Numero_de_site_Precedent As Integer
Dim TailleType As Integer
    TailleType = 25
    ' on utilise la derniere colonne générique pour creer un nouvelle typologie
    Set FeuillePlanning = Worksheets("Planning")
    Application.Calculation = xlCalculationManual
    fin_col_a_copier = FeuillePlanning.Range("FINCOL").Column
    deb_col_a_copier = FeuillePlanning.Range("DEBCOL").Column
    fin = NumCol2lettre(fin_col_a_copier)
    deb = NumCol2lettre(deb_col_a_copier)
 
    nouvelle_feuille = NumCol2lettre(deb_col_a_copier) ===>  macro qui permet de passer de mode lettres en mode chiffre.
    feuille_precedente = NumCol2lettre(deb_col_a_copier - TailleType )
    With FeuillePlanning
    ' On ne peut mettre en tout que 18 typologies de sites
    If Left(.Range(feuille_precedente & 2).Text, 12) = "Type de Site" Then
        Numero_de_site_Precedent = Right(.Range(feuille_precedente & 2).Text, 2)
        If Int(Numero_de_site_Precedent) > 17 Then GoTo Erreur_Grand_Nombre_de_Sites
    End If
    End With
 
    Columns(deb & ":" & fin).Select
   ' Columns(deb & ":" & deb).Activate
    ' on met a jour les colonnes
    Selection.Copy
    Columns(deb & ":" & deb).Activate
    Selection.Insert Shift:=xlToRight   ======> DECLENCHEMENT DE L’ERREUR SI EN MODE NON ENREGISTRE
'    Selection.Group
    'Range("A1").Select
    Range(nouvelle_feuille & 2) = "Type de Site"
    If Left(Range(feuille_precedente & 2).Text, 12) = "Type de Site" Then
        Numero_de_site_Precedent = Right(Range(feuille_precedente & 2).Text, 2)
        Range(nouvelle_feuille & 2) = Range(nouvelle_feuille & 2) & " " & (Int(Numero_de_site_Precedent) + 1)
    Else: Range(nouvelle_feuille & 2) = "Type de Site 1"
    End If
   ActiveWorkbook.Save
GoTo Fin_Fonction
Erreur_Grand_Nombre_de_Sites:
  MsgBox "Attention, il n'est pas possible de rentrer plus de 18 sites"
  GoTo Fin_Fonction
Fin_Fonction:
Set FeuillePlanning = Nothing
Exit Sub
End Sub