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 LERREUR 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
Partager