Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/02/2010, 21h39   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 0
Points : 0
Par défaut Erreur validation range

Bonjour, j'ai une erreur sous Excel 2000 que je n'arrive pas à maitriser, des fois ça marche des fois non, et je ne sais pas pourquoi, voilà l'extrait du code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim area As Range
(...)
Set area = Range(Sheets(1).Cells(i, j), Sheets(1).Cells(i, j+8))
With area
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlEdgeBottom).Weight = xlThin
        .Interior.ColorIndex = 2
        .Validation.Delete
        .Validation.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
                 Operator:=xlBetween, Formula1:="0", Formula2:="1" 'ça plante ici
        .Locked = False     
    End With
J'ai "erreur d'exécution 1004
Erreur définie par l'application ou par l'objet"

J'ai essayé d'insérer un ".select" avant la validation pour comprendre, et des fois même ça plante.
Je sais par exemple que si on ne met pas le ".delete" et qu'il y a déjà une validation ça plante à tous les coups, mais là... je vois vraiment pas !

Merci d'avance pour votre aide
djtef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 22h08   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 756
Points : 12 756
ça à l'aire de fonctionner
Code :
1
2
3
4
5
6
7
8
9
10
Set area = Sheets(1).Range(Sheets(1).Cells(i, j), Sheets(1).Cells(i, j + 8))
With area
    .Borders(xlEdgeLeft).Weight = xlThin
    .Borders(xlEdgeRight).Weight = xlThin
    .Borders(xlEdgeBottom).Weight = xlThin
    .Interior.ColorIndex = 2
    .Validation.Delete
    .Validation.Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="0", Formula2:="1" 'ça plante ici
    .Locked = False
End With
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 22h13   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 0
Points : 0
Ben juste cet extrait oui, mais quand je suis au boulot j'ai une erreur, alors :

-Soit ça vient de Excel 2000
-Soit ça vient des lignes d'avant
djtef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 22h22   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 756
Points : 12 756
cette ligne me gêne quand même
Code :
Set area = Range(Sheets(1).Cells(i, j), Sheets(1).Cells(i, j+8))
il fallait:
Code :
Set area = sheets(1).Range(Sheets(1).Cells(i, j), Sheets(1).Cells(i, j+8))
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 22h39   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 0
Points : 0
Oui effectivement, je l'avais mis au début et j'avais vu que ça marchait en l'enlevant, je vois pas trop l'intérêt de le mettre partout, pour moi dès qu'on met :
sheets(1).range(...) on sait que la plage est est dans la feuille 1, enfin bon c'est sûrement plus propre.
djtef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 22h44   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 756
Points : 12 756
si sheets(1) n'est pas la feuille active, tu auras des désagréments
c'est pas un choix
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 23h11   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 0
Points : 0
Justement dans mon cas c'était pas le feuille active et ça avait l'air de marcher mais bon effectivement on ne maîtrise pas le fonctionnement à 100% je suis d'accord.
djtef est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 12h37.


 
 
 
 
Partenaires

Hébergement Web