Voir aussi
Roulette de souris et VBA
Pourquoi est-il impossible d'utiliser la roulette de ma souris dans VBA alors qu'elle fonctionne dans la feuille de calcul ?
Ce problème est observé avec certains drivers de souris, mais pas tous.
Commence par tester si la souris est reponsable du problème en en changeant si c'est possible.
Réinstalle les drivers de la souris à jour.

Sinon, il y a heureusement deux patchs à télécharger pour les souris récalcitrantes :
VBScroll
ou
FreeWheel

ou encore
les explications et solutions de microsoft
Twinley,
Ajouté ou modifié le 07/02/2007 (N°1801)
Sélection d'une seule cellule impossible
Dans excel, quand je veux cliquer sur une cellule, on dirait que le clic gauche est bloqué et du coup c'est toute une plage qui est sélectionnée.
Appuie une fois sur la touche F8.
Si cela ne change rien et que tu as une souris à molette, appuie sur la roulette molette.
Si le problème persiste, branche une autre souris pour voir si le problème vient de là. Si c'est le cas, mets à jour les pilotes de ta souris.
Flo Cabon,
Ajouté ou modifié le 07/02/2007 (N°1800)
Erreur d'exécution 9 liée à une absence d'extension sur un nom de fichier
J'ai une macro qui fonctionne sans problème sur un poste mais déclenche une Erreur d'exécution 9 : l'indice n'appartient pas à la sélection" sur un autre poste.
Après recherche, il est apparu que dans une cellule la macro allait chercher le nom d'un
fichier excel dans lequel l'extension (.xls) n'était pas précisée pour effectuer une tâche.
Sur un des deux postes, windows était configuré pour masquer les extensions dont le
type est connu. Sur ce poste, la macro fonctionnait. Sur l'autre en revanche, les extensions
étaient affichées et le fichier n'était pas reconnu...
Conclusion, mieux vaut toujours indiquer dans les macros les noms complets des fichiers,
avec les extensions !
Noémie,
Ajouté ou modifié le 02/05/2004 (N°1369)
Nettoyer un classeur et redéfinir le used range
J'utilise une feuille pour faire des importations de données. La taille de ces données varie d'une fois sur l'autre et du coup le used range ne correspond pas forcément aux données actuelles. Comment faire pour nettoyer ma feuille
J'ai retrouvé les explications que LL avait fourni l'an passé
j'en ai fait une macro qu'il suffit de mettre dans un classeur
quelconque ( pourquoi pas perso.xls)
ce classeur étant chargé dans Excel.
Ensuite ouvrir le classeur à faire maigrir, activer ce classeur
puis lancer la macro "Nettoie".


Sub Nettoie()
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String,
Avant As Double, plage As Range
On Error Resume Next
Calc = Application.Calculation ' ---- mémorisation de l'état de
recalcul
'------------------------------------------------------------
MsgBox "Pour le classeur actif : " _
& Chr(10) & ActiveWorkbook.FullName _
& Chr(10) & "dans chaque feuille de calcul" _
& Chr(10) & "recherche la zone contenant des données," _
& Chr(10) & "réinitialise la dernière cellule utilisée" _
& Chr(10) & "et optimise la taille du fichier Excel", _
vbInformation, _
"d'après LL par GeeDee@m6net.fr"
'-------------------------------------------------------------
MsgBox "Taille initiale de ce classeur en octets" _
& Chr(10) & FileLen(ActiveWorkbook.FullName), _
vbInformation, ActiveWorkbook.FullName
'------------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = True
End With
'-------------------- le traitement
For Each Sht In Worksheets
Avant = Sht.UsedRange.Cells.Count
Application.StatusBar = Sht.Name & "-" & Sht.UsedRange.Address
'-------------------Traitement de la zone trouvée
If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
'----------------Suppression des lignes inutilisées
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(,
2)
'----------------Suppression des colonnes inutilisées
If Not DCell Is Nothing Then Sht.Range(DCell,
Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
ActiveWorkbook.Save
'---------------------Message pour la feuille traitée
MsgBox "Nom de la feuille de calcul :" _
& Chr(10) & Sht.Name _
& Chr(10) & Format(Sht.UsedRange.Cells.Count / Avant, "0.00%")
& " de la taille initiale", _
vbInformation, ActiveWorkbook.FullName
Next Sht
'--------------------Message fin de traitement
MsgBox "Taille optimisée de ce classeur en octets " & Chr(10) &
FileLen(ActiveWorkbook.FullName), _
vbInformation, _
ActiveWorkbook.FullNameActive
'--------------------
Application.StatusBar = False
Application.Calculation = Calc
End Sub
GeeDee, (N°1200)
Restauration des barres d'outils disparues
L'ouverture d'un classeur comportant des macros à provoqué une drôle de pagaille dans les barres d'excel : les petites icônes de fermeture en haut à droite ont disparues et le seul moyen de quitter est le menu Fichier. Le redémarrage du PC ne change rien. Comment récupérer l'affichage de la barre des tâches sous excel sans devoir réinstaller Excel ou Windows ?
- Essaie clic droit sur la barre de titre et Restaure
- Mais mais mais ! Je n'ai plus de barre de titre dans Excel pour faire un clic droit et
Restaure !
- Si si, tout en haut tu ne la vois pas mais elle y est !!
- Super c'était ça
...

Pour restaurer l'application Excel ouverte :
- si la zone de titre est visible, faire un clic bouton de droite sur la bande bleue et lancer
"Restauration".
- si la zone de titre ou la barre des tâches ont disparues, il faut positionner le curseur sur
la 1ere ligne de pixels tout en haut de l'écran, cliquer sur le bouton de droite et lancer
"Restauration".
Robert Dezan, (N°1199)
Plantage Feuil11011111111111111111111111
Excel ne parvient plus à ouvrir un classeur contenant des feuilles dupliquées les unes à partir des autres
Le "Feuil11011111111111111111111111" du message d'erreur n'est pas un nom de feuille
de calcul, mais le nom du module VBA attaché à l'une des feuilles de ton classeur (CodeName).

Cette bizarrerie est dûe à la manière dont Excel 97 génère ses CodeNames. Mettons que tu as
dans ton classeur une feuille dont le CodeName est "Feuil1".

- Si tu dupliques cette feuille, le CodeName de la nouvelle feuille sera"Feuil11"
- Si tu redupliques cette nouvelle feuille, le CodeName sera "Feuil111"
- Et ainsi de suite ("Feuil1111", "Feuil11111"...)

Autrement dit, à chaque duplication VBA ajoute "1" au CodeName de la feuille
dupliquée pour obtenir celui de la nouvelle feuille. Si tu dupliques les feuilles "en
chaîne" (Feuil1 vers Feuil1 (2), puis 'Feuil1 (2)' vers 'Feuil1 (3)'...) le CodeName
atteint vite les 32 caractères apparemment autorisés.

C'est sans doute ce qui est à l'origine du plantage sur ton classeur. Pour éviter ça, il faut
dupliquer toujours la même feuille de base : Feuil1 vers Feuil1 (2), puis encore Feuil1 vers
Feuil1 (3) etc. Les Codenames s'incrémenteront au lieu de s'allonger (Feuil11, puis Feuil12,
Feuil13 etc.)

Ce problème a été résolu sous Excel 2000. Les CodeNames s'incrémentent systématiquement, quelle
que soit la feuille dupliquée.

Pour récupérer ton classeur, fais une copie des contenus de chaque feuille dans un nouveau
classeur "C:\Temp\ ruc.xls", et annule ensuite les liaisons avec l'ancien classeur.
Laurent Longre, (N°1198)
La mémoire ne peut pas être "written"
J'ai un classeur excel 97 de 250 ko qui ne veut plus s'ouvrir et me retourne l'erreur suivante: L'instruction à "0x3070aeac" emploie l'adresse mémoire "0x024c7e02". La mémoire ne peut pas être "written" Quelle est la signification d'un tel message ? Comment y remédier ??
Si c'est sous windows NT 4, c'est un pb archi connu, il suffit de réappliquer
le dernier service pack et tout rentre dans l'ordre.
JièL, (N°1197)
Mémoire insuffisante avec des graphiques
J'ai effectué 5 graphiques et je désire les reproduire 17 fois. Arrivé au bout de 7 copier / coller, une requête "mémoire insuffisante" apparaît. Pourtant, il me reste encore 50% de ressource système.
La gestion des graphiques dans excel se fait avec une zone réservée de la mémoire que tu ne
peux pas étendre. Pb classique et sans solution autre que de fractionner sur plusieurs
classeurs ou de limiter le nombre de graphes. Un point important également : ce qui apparemment
utilise le plus de mémoire c'est quand dans tes graphes tu as coché la case "échelle
automatique" dans l'onglet police. Décoche avant de copier et vois si ça améliore les
performances.
Flo Cabon, (N°1196)
Mémoire insuffisante pour afficher en entier
"Mémoire insuffisante pour afficher en entier". Ce message d'erreur apparait parfois ...Il suffit de cliquer sur "ok" pour pouvoir continuer à travailler mais ça revient sans cesse.
Désactivel'affichage des onglets du classeur...
ChrisV, (N°1195)
Formules non effectuées
Sur une de mes feuilles, les opérations ne s'effectuent pas. Je vois affiché =somme(A1:A23) mais pas le résultat.
Tu as activé par mégarde le mode "formules". Pour le désactiver,
Outils/Options/Affichage, décoche "formules"
Laurent Mortézai, (N°1194)
Formats anormaux
Quand j'entre dans une cellule formatée en dates jj/mm/aa par exemple 26/06/01 au lieu de 26/06/01 j'obtiens 04/01/00 soit 4.33333 en format nombre en date 04/01/00 !!!!
Outils/Options/Transition => décoche "autre mode de saisie des formules" et
tant qu'à y être "autre mode de saisie des formules". Ceci se produit souvent
quand on récupère des données qui ont été saisies sous Lotus.
Laurent Mortézai, (N°1193)
Fichier obèse
Pourquoi un fichier peut-il soudainement devenir obèse et que faire pour le mettre au régime ?
Excel a la méchante habitude de conserver en mémoire comme référence de plage de cellules
utilisée, la cellule A1 et la cellule la plus éloignée dans laquelle tu as pu placer à un moment donné
une information, un format ou une formule. Même si par la suite tu as effacé ces données, excel
se souvient que tu as utilisé cette cellule.

Une cellule qui est vide mais qui a été formatée "compte" comme une cellule remplie.
Par exemple, si tu sélectionnes une colonne entière et que tu appliques une couleur de fond,
ou une mise en gras de la police, la plage de données utilisées pour excel va brusquement aller
jusqu'à la cellule 65536... même si tu n'as que 3 cellules utiles dans cette colonne.
Avec excel, comme dans les autres logiciels, le contenu des cellules, les
formules ou un module de code (macros), ne prennent pas beaucoup d'espace mémoire,
mais la taile de la plage de cellules que tu utilises dans chacune des feuilles en requiert beaucoup.
Comme excel conserve en mémoire les lignes et les colonnes qui ne servent plus à rien
tu peux te retrouver avec un gros fichier même si le contenu est très limité.

Lorsque tu élabores ton classeur, si tu veux faire des tests c'est une très mauvaise idée de les
faire en bas ou à droite de ta zone de travail.
Lorsque tu effaces les données de ton test, tu pourrais oublier quelques cellules qui ont par
exemple seulement un espace, créé par la barre d'espacement ou une formule et donc non
visible à l'oeil. Outre que cela peut faire prendre de lembonpoint à ton classeur, cela pourrait
aussi être suffisant parfois rendre certaines macros ou fonctions inopérantes. Il n'est pas facile
par la suite de trouver la causes de telles erreurs.

Pour savoir quelle est la plage considérée comme "utilisée" par excel, appuie sur ctrl+fin. Si le
curseur se retrouve en bas alors que rien ne s'y trouve, tu as identifié ton problème.

La solution c'est d'abord de ne jamais appliquer un format à toute une ligne ou colonne.

Pour éliminer les formats inutiles qui s'y trouvent tu peux appliquer la macro adhoc sur la page formats.
Ensuite sélectionne les lignes et colonnes inutiles et supprime les. Attention, il ne faut
pas les effacer mais bel et bien les supprimer (édition/supprimer).
Comme excel fera toujours en sorte d'avoir 256 colonnes et 65536 lignes dans une feuille,
il va recréer des cellules vides pour compléter la feuille ce qui fait que visuellement on peut
avoir l'impression qu'il ne s'est rien passé.Cette manoeuvre peut être faite manuellement ou
en utilisant l'une des macros ci-dessous.


' réinitialise l'emplacement de la dernière cellule
Sub RéinitUsedRange()
ActiveSheet.UsedRange
End Sub

Et pour faire une cure contrex, ces trois procédures sont très efficaces : Tu peux les mettre
dans le perso.xls

*********************************
Sub Reconstruit(NomClasseur$) 'Frédéric Sigonneau, MPFE
'le projet du classeur ne doit pas être protégé
Dim Wbk As Workbook, Chemin$, tmpNom$, Nom$
Dim Projet, i&, Module$

On Error Resume Next
Set Wbk = Workbooks(NomClasseur)
On Error GoTo 0
If Wbk Is Nothing Then
MsgBox "Le classeur à reconstruire doit être ouvert..."
Exit Sub
End If

'dossier temporaire pour l'exportation des modules de code
Chemin = Wbk.Path & "\ empExport"
MkDir Chemin: Chemin = Chemin & "\\\"

'export des modules
Set Projet = Wbk.VBProject
With Projet
For i = 1 To .VBComponents.Count
Select Case .VBComponents(i).Type
Case 1:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".bas"
Case 2:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".cls"
Case 3:
.VBComponents(i).Export Chemin & .VBComponents(i).Name & ".frm"
End Select
Next
End With

'export des feuilles dans un nouveau classeur
tmpNom = Left(NomClasseur, Len(NomClasseur) - 4) & "_Refait.xls"
Wbk.Sheets.Copy
ActiveWorkbook.SaveAs Wbk.Path & "\\\" & tmpNom

'réimport des modules dans le nouveau classeur
Module = Dir(Chemin & "*.*")
Do While (Len(Module) > 0)
On Error Resume Next
Workbooks(tmpNom).VBProject.VBComponents _
.Import(Chemin & Module).Name = Module
On Error GoTo 0
Kill Chemin & Module
Module = Dir()
Loop

'enregistrement et nettoyage
Workbooks(tmpNom).Close True
RmDir Chemin

'remplacement de l'ancien fichier par le nouveau
If MsgBox("Donner au fichier reconstruit le nom du fichier " & _
"d'origine et détruire ce dernier ?", vbYesNo) = vbYes Then
Chemin = Wbk.Path & "\\\": Nom = Wbk.Name
Wbk.Close False
Kill Chemin & Nom
Name Chemin & tmpNom As Chemin & Nom
End If

End Sub
*****************************************

Sub Nettoie() 'Laurent Longre mpfe, mise en forme GeeDee
Dim Sht As Worksheet, DCell As Range, Calc As Long, Rien As String,
Avant As Double, plage As Range
On Error Resume Next
Calc = Application.Calculation ' ---- mémorisation de l'état de
recalcul
'------------------------------------------------------------
MsgBox "Pour le classeur actif : " _
& Chr(10) & ActiveWorkbook.FullName _
& Chr(10) & "dans chaque feuille de calcul" _
& Chr(10) & "recherche la zone contenant des données," _
& Chr(10) & "réinitialise la dernière cellule utilisée" _
& Chr(10) & "et optimise la taille du fichier Excel", _
vbInformation, _
"d'après LL par GeeDee@m6net.fr"
'-------------------------------------------------------------
MsgBox "Taille initiale de ce classeur en octets" _
& Chr(10) & FileLen(ActiveWorkbook.FullName), _
vbInformation, ActiveWorkbook.FullName
'------------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = True
End With
'-------------------- le traitement
For Each Sht In Worksheets
Avant = Sht.UsedRange.Cells.Count
Application.StatusBar = Sht.Name & "-" & Sht.UsedRange.Address
'-------------------Traitement de la zone trouvée
If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
'----------------Suppression des lignes inutilisées
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(,2)
'----------------Suppression des colonnes inutilisées
If Not DCell Is Nothing Then Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
ActiveWorkbook.Save
'---------------------Message pour la feuille traitée
MsgBox "Nom de la feuille de calcul :" _
& Chr(10) & Sht.Name _
& Chr(10) & Format(Sht.UsedRange.Cells.Count / Avant, "0.00%") & _
" de la taille initiale", vbInformation, ActiveWorkbook.FullName
Next Sht
'--------------------Message fin de traitement
MsgBox "Taille optimisée de ce classeur en octets " & Chr(10) & _
FileLen(ActiveWorkbook.FullName), _
vbInformation, _
ActiveWorkbook.FullNameActive
'--------------------
Application.StatusBar = False
Application.Calculation = Calc
End Sub

******************************************************
Sub ménage()
'Jacques Chaussard et Denis Michon
Dim sh As WorkSheet
On Error Resume Next
For Each sh In Worksheets


sh.Range(sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireRow, _
sh.Cells.Find("*", , xlFormulas, _
, xlByRows, xlPrevious).EntireRow) _
.Offset(1, 0).Delete

sh.Range(sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireColumn, _
sh.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious). _
EntireColumn).Offset(0, 1).Delete
Next
ActiveWorkbook.Save
Set Sh = Nothing
End Sub
Frédéric Sigonneau, Laurent Longre, GeeDee, Flo Cabon, Denis Michon, Jacques Chaussard,
Ajouté ou modifié le 27/11/2004 (N°1192)
Désinstallation complète d'Office
Comment désinstaller complètement office ?
Un utilitaire de nettoyage des résidus laissés par Office 97 sur le disque dur et dans la base
de registres, est téléchargeable sur
http://support.microsoft.com/support/kb/articles/q176/8/23.asp

Un utilitaire équivalent existe pour Office 2000 :
http://support.microsoft.com/support/kb/articles/Q239/9/38.asp
pour le CD 1 (Eraser2k.exe)
http://support.microsoft.com/support/kb/articles/q247/6/74.asp
pour le CD 2 (Erasecd2.exe)

Ces programmes sont très utiles pour faire une réinstallation vraiment "propre"
d'Office, en cas par exemple de plantages systématiques d'Excel à cause d'un fichier système
corrompu. Et si on n'a plus besoin d'Office, c'est idéal pour récupérer de l'espace disque.
J'ai dû utiliser récemment les deux Eraser d'Office 2000, après désinstallation, et ils ont
supprimé environ 45 Mo de fichiers résiduels sur le disque dur. No comment...

Dans certains cas les problèmes peuvent être liés à des barres d'outils corrompues. Recherche
sur ton PC les fichiers (cachés) portant l'extension .xlb. C'est là qu'excel stocke les
personnalisations de l'application. Déplace ce fichier et relance excel.
Laurent Longre, Patrick, Flo Cabon, (N°1191)
Désactiver les macros
Suite au plantage de mon ordi, je n'arrive plus à ouvrir le classeur excel sur lequel j'étais en train de travailler.
As tu essayé de l'ouvrir avec le bouton shift enfoncé ??
cette manipulation désactive les macro qui pourraient s'exécuter à l'ouverture du fichier.
Isabelle, (N°1190)