OVH Cloud OVH Cloud

n'appartient pas à la sélection 9

22 réponses
Avatar
daniel
Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais plante
maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=
_
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell

10 réponses

1 2 3
Avatar
JLuc
*Bonjour daniel*,
Ca plante à la première boucle ou après quelques passages ?
Y aurai t'il, dans ta liste, un nom qui ne soit pas le nom d'une
feuille ?
Autre possibilité, avant le On Error Resume Next, remet Err = 0 pour le
cas où elle est gardé une erreur en mémoire (mais je suis pas certain
de ce que j'avance, c'est pour faire avance le shimili...
shlimibi...shlibimi... le truc lol)

Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais plante
maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
lSteph
Bonjour,

Avec le on error resume next cela ne devrait a priori pas se produire
toutefois je relève un souci, si ta macro relève un nom qui existe déjà sht
prend ce nom et donc la feuille n'est pas créée mais (le pb est là) dans
l'itération suivante sht ne sera pas à nothing donc pas créée de plus si un
nom dans cell dépasse la capacité cela plante , voici qui devrait corriger
ces deux pb et qui sait peut-être l'autre erreur que je n'arrive pas à
obtenir:


Dim sht As Worksheet
For Each cell In Selection.Cells

Nom = Left(cell.Value, 30)
If Nom <> "" Then
On Error Resume Next
Set sht = Nothing
Set sht = Sheets(Nom)
On Error GoTo 0
If sht Is Nothing Then Sheets.Add.Name = Nom
End If

Next cell

' @+
'lSteph

"daniel" a écrit dans le message de news:

Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais
plante maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=
_
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell









Avatar
JLuc
*Bonjour lSteph*,
Comme quoi, quand on lit pas jusqu'au bout... :/
Promis, ferais mieux la prochaine fois :')


Bonjour,

Avec le on error resume next cela ne devrait a priori pas se produire
toutefois je relève un souci, si ta macro relève un nom qui existe déjà sht
prend ce nom et donc la feuille n'est pas créée mais (le pb est là) dans
l'itération suivante sht ne sera pas à nothing donc pas créée de plus si un
nom dans cell dépasse la capacité cela plante , voici qui devrait corriger
ces deux pb et qui sait peut-être l'autre erreur que je n'arrive pas à
obtenir:


Dim sht As Worksheet
For Each cell In Selection.Cells

Nom = Left(cell.Value, 30)
If Nom <> "" Then
On Error Resume Next
Set sht = Nothing
Set sht = Sheets(Nom)
On Error GoTo 0
If sht Is Nothing Then Sheets.Add.Name = Nom
End If

Next cell

' @+
'lSteph

"daniel" a écrit dans le message de news:

Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais plante
maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=
_
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell










--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O


Avatar
lSteph
Salut JLuc
Vois pas pourquoi, tu dis cela puisque je n'arrive pas non plus à reproduire
l'erreur
c'est en cherchant à en faire que j'ai débusqué les autres,
d'ailleurs on peut continuer à chercher...
;-)

@+

lSteph
"JLuc" a écrit dans le message de news:

*Bonjour lSteph*,
Comme quoi, quand on lit pas jusqu'au bout... :/
Promis, ferais mieux la prochaine fois :')


Bonjour,

Avec le on error resume next cela ne devrait a priori pas se produire
toutefois je relève un souci, si ta macro relève un nom qui existe déjà
sht prend ce nom et donc la feuille n'est pas créée mais (le pb est là)
dans l'itération suivante sht ne sera pas à nothing donc pas créée de
plus si un nom dans cell dépasse la capacité cela plante , voici qui
devrait corriger ces deux pb et qui sait peut-être l'autre erreur que je
n'arrive pas à obtenir:


Dim sht As Worksheet
For Each cell In Selection.Cells

Nom = Left(cell.Value, 30)
If Nom <> "" Then
On Error Resume Next
Set sht = Nothing
Set sht = Sheets(Nom)
On Error GoTo 0
If sht Is Nothing Then Sheets.Add.Name = Nom
End If

Next cell

' @+
'lSteph

"daniel" a écrit dans le message de news:

Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais
plante maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:= _
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell










--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






Avatar
MichDenis
L'essentiel de la réponse a déjà été donnée par JLuc et LSteph.

A ) Effectivement, dans ta plage de cellules, il y a sûrement 2
contenus de cellules qui n'ont pas de correspondance avec le
nom des onglets de feuilles de ton classeur

| On Error Resume Next
| Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
| message ??? sht = nothing et nom = 1er nom de la liste.
| On Error GoTo 0

L'usage de "On Error Goto 0" ne fonctionne qu'une fois... c'est-à-dire
que la première fois où un nom n'existe pas, le "Goto 0" fait son job.
Cependant, si dans la même exécution, il y a une seconde feuille,
l'usage de "On error resume Next jumelé avec le Goto 0" n'empêchera
pas l'affichage du message d'erreur et l'arrêt de la macro.

Il est préférable d'utiliser une ligne du genre :
If err<>0 then err = 0 à la plage de On Error goto 0... alors aucun
message d'erreur n'apparaîtra... il faut juste s'assurer que le
On error resume next ne cache pas des erreurs susceptibles
de conduire à un ou des résultats erronnés.




"daniel" a écrit dans le message de news:
Bonjour,
J'utilisais une macro sans soucis jusqu'à présent, mais maintenant elle
bloque et me met le message " n'appartient pas à la sélection".
Je mets le début de la macro, qui avant fonctionnait très bien, mais plante
maintenant ??
Merci pour votre aide.

Sub Répart_JUR_QuandClic()
'
' Répart_JUR_QuandClic Macro
' Macro enregistrée le 28/09/2006 par da
'
Dim cell As Range, Nom$, Sht As Worksheet
' Application.ScreenUpdating = False

'----------------------------------------------------------------------------
'Filtre pour obtenir tous les Gestionnaires
Sheets("Totalité").Select
Range("A4:AF5000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange: _
Range("Ag1:Ag2"), CopyToRange:=Range("Ag4"), Unique:=True
lign = [ag65000].End(xlUp).Row
Range("Ag5:Ag" & lign).Select
Selection.Cut
Sheets("SyntHèse").Select
Range("D2").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'----------------------------------------------------------------------------
'Tri décroissant pour créer les feuilles
Range("D2:d" & lign - 3).Select
Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
'----------------------------------------------------------------------------
'Création d'une feuille pour chaque Gestionnaire
For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom) ---------------> c'est ici qu'apparaît le
message ??? sht = nothing et nom = 1er nom de la liste.
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell
Avatar
daniel
Bonsoir,
Merci pour les réponses, je les ai testées, mais le problème est toujours.
En plus, je me sers de la même macro dans un autre fichier, légèrement
modifiée et le prob se présente aussi avec celle-là ???
Après avoir changé le code comme vous me l'indiquez tous les deux, rien de
changé, je rétablis le code et là ça passe.
Je réessaye avec l'autre fichier, re-belote, ça plante, je le ferme, je
retente avec le 1er fichier et ça ne passe plus.
Mon fichier comprend 2 feuillets, totalité et synthèse.
Il faut peut-être remettre à 0 le calcul des erreurs ????, je ne sais pas
faire.
Si vous avez des conseils, je suis preneur car je suis perdu.
Par avance, merci de la part d'un débutant.
Daniel
Avatar
JLuc
*Bonjour lSteph*,
Si tu relis ma pitoyable intervention tu comprendra :
Je lui ai dit que ses noms n'étaient peut être pas des noms de feuille,
évidemnet, puisque si il y a erreur, il crée une feuille de ce nom :/

Salut JLuc
Vois pas pourquoi, tu dis cela puisque je n'arrive pas non plus à reproduire
l'erreur
c'est en cherchant à en faire que j'ai débusqué les autres,
d'ailleurs on peut continuer à chercher...
;-)


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
lSteph
Bonsoir,

tu peux déposer ton fichier ici: http://cjoint.com
et revenir mettre le lien sur ce fil.

@+


"daniel" a écrit dans le message de news:

Bonsoir,
Merci pour les réponses, je les ai testées, mais le problème est toujours.
En plus, je me sers de la même macro dans un autre fichier, légèrement
modifiée et le prob se présente aussi avec celle-là ???
Après avoir changé le code comme vous me l'indiquez tous les deux, rien de
changé, je rétablis le code et là ça passe.
Je réessaye avec l'autre fichier, re-belote, ça plante, je le ferme, je
retente avec le 1er fichier et ça ne passe plus.
Mon fichier comprend 2 feuillets, totalité et synthèse.
Il faut peut-être remettre à 0 le calcul des erreurs ????, je ne sais pas
faire.
Si vous avez des conseils, je suis preneur car je suis perdu.
Par avance, merci de la part d'un débutant.
Daniel



Avatar
JLuc
*Bonjour daniel*,
Et comme çà :

If Nom <> "" Then
Err = 0
On Error Resume Next
Set Sht = Sheets(Nom)
If Err <> 0 Then Sheets.Add.Name = Nom
End If

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
Avatar
DarthMac
hello,

cela n'a peut-être rien à voir avec une réponse d'expert ès macros, mais il
m'est arrivé (même assez récemment) qu'excel ait un comportement bizarre,
particulièrement génère des erreurs de macros sur des procédures qui
marchaient très bien 2 jours avant... et après avoir cherché dans tous les
sens, relu le code, tenté plein de trucs, appelé à l'aide, j'ai finalement
réalisé que ma machine (que je n'éteins jamais) n'avait pas rebooté depuis 2
mois...

Dans ces cas là, je fais d'abord un redémarrage de session utilisateur,
voire en second un reboot complet et souvent, cela règle bien des problèmes.

Bien sûr, si contrairement à moi, tu démarres ta machine au quotidien, il y
a peu de chance que tu sois affecté par ce genre de choses.

Mac


"daniel" a écrit dans le message de news:

Bonsoir,
Merci pour les réponses, je les ai testées, mais le problème est toujours.
En plus, je me sers de la même macro dans un autre fichier, légèrement
modifiée et le prob se présente aussi avec celle-là ???
Après avoir changé le code comme vous me l'indiquez tous les deux, rien de
changé, je rétablis le code et là ça passe.
Je réessaye avec l'autre fichier, re-belote, ça plante, je le ferme, je
retente avec le 1er fichier et ça ne passe plus.
Mon fichier comprend 2 feuillets, totalité et synthèse.
Il faut peut-être remettre à 0 le calcul des erreurs ????, je ne sais pas
faire.
Si vous avez des conseils, je suis preneur car je suis perdu.
Par avance, merci de la part d'un débutant.
Daniel



1 2 3