Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
954 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code qui fait crasher excel??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code qui fait crasher excel??

n°2031310
DavidDeLyo​n
Posté le 22-10-2010 à 00:43:11  profilanswer
 

Bonjour,
j'essaye d'exécuter le code suivant directement dans ma feuille de calcul, mais il fait immédiatement crasher excel 2007. Sauriez-vous pourquoi ?? :
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    'Macro Dan pour Kiriko le 21/10/2010
    If Not Intersect(Target, Columns("A:A" )) Is Nothing Then
    Target = UCase(Target)
    End If
    If Not Intersect(Target, Columns("B:B" )) Is Nothing Then
    Target = Application.Ceiling(Target, 0.25)
    End If
    End Sub
 
Merci par avance de l'aide que vous pourriez m'apporter....

mood
Publicité
Posté le 22-10-2010 à 00:43:11  profilanswer
 

n°2031342
SuppotDeSa​Tante
Aka dje69r
Posté le 22-10-2010 à 10:27:39  profilanswer
 

Hello
 
Je n'ai pas de crash d'excel sous 2007
Parcontre, comme ton second If ne teste pas si c'est du texte de saisi, Excel renvoie une erreur si on saisit du texte en colonne B


---------------
Soyez malin, louez entre voisins !
n°2037101
Xxxaaavvv
Posté le 19-11-2010 à 10:36:04  profilanswer
 

C'est la récursivité de ton évenement qui peut faire planter.
 
Target = UCase(Target) reprovoque l'évenement  
Worksheet_Change

n°2037169
kiki29
Posté le 19-11-2010 à 13:48:35  profilanswer
 

Salut, pas de crash sous 2002 (?) mais sous 2007 oui, avec msg d'erreur suivant
Erreur d'éxécution -2147417848(80010108)
La méthode '_Default' de l'object 'Range' a échoué avec arrêt sur Target = UCase(Target)
cela quand on efface le contenu d'une cellule de la colonne A : cellule vierge ou pas
 
Remplacer par


    If Not Intersect(Target, Columns("A:A" )) Is Nothing Then
        If Not IsEmpty(Target) Then
            Target = UCase(Target)
        End If
    End If


qui semble fonctionner

Message cité 1 fois
Message édité par kiki29 le 19-11-2010 à 13:49:02
n°2037174
Xxxaaavvv
Posté le 19-11-2010 à 13:54:25  profilanswer
 

kiki29 a écrit :

Salut, pas de crash sous 2002 (?) mais sous 2007 oui, avec msg d'erreur suivant
Erreur d'éxécution -2147417848(80010108)
La méthode '_Default' de l'object 'Range' a échoué avec arrêt sur Target = UCase(Target)
cela quand on efface le contenu d'une cellule de la colonne A : cellule vierge ou pas
 
Remplacer par


    If Not Intersect(Target, Columns("A:A" )) Is Nothing Then
        If Not IsEmpty(Target) Then
            Target = UCase(Target)
        End If
    End If


qui semble fonctionner


 
L'interret de l'intersect me parait bizare :D
ça serait pas plus simple comme ça ? :
 
 


    If Target.Column = 1 And Not IsEmpty(Target.Value) Then
        Target.Value = UCase(Target.Value)
    End If


 
et rajouter le .Value c'est plus propre...


Message édité par Xxxaaavvv le 19-11-2010 à 13:55:24
n°2037175
kiki29
Posté le 19-11-2010 à 13:57:00  profilanswer
 

Salut, sans aucun doute , je ne me suis préoccupé que du code donné et non de son optimisation, de même pour le 2eme Intersect


    If Not Intersect(Target, Columns("B:B" )) Is Nothing Then
        If IsNumeric(Target) Then
            Target = Application.Ceiling(Target, 0.25)
        End If
    End If


ce qui avec ta remarque opportune donne


    If Target.Column = 2 And IsNumeric(Target.Value) Then  
        Target.Value = Application.Ceiling(Target.Value, 0.25)
    End If  


Message édité par kiki29 le 19-11-2010 à 14:01:28
n°2037180
Xxxaaavvv
Posté le 19-11-2010 à 14:02:58  profilanswer
 

je pense qu'il faut enlever le "Not"
mais je ne suis pas sur, je ne connais pas la fonction Ceiling
 


    If Target.Column = 2 And IsNumeric(Target.Value) Then  
        Target.Value = Application.Ceiling(Target.Value, 0.25)
    End If  


 
 
Edit : oups :p


Message édité par Xxxaaavvv le 19-11-2010 à 14:03:16

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Code qui fait crasher excel??

 

Sujets relatifs
VBA Excel CheckBoxVBA Excel - concatener en fonction d'un Tag
Macro Excel : Accès restreint par onglet suivant utilisateuraide pour code assembleur
correction d'un code assembleurPlantage aléatoire d'excel avec methode SORT
[ Juridique ] Vente de licence de code sourceExcel : Fonction si
Plus de sujets relatifs à : Code qui fait crasher excel??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR