Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécution d'une macro sur une feuille protégée.

16 réponses
Avatar
Porter
Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *

10 réponses

1 2
Avatar
isabelle
bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle


Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *


Avatar
Porter
Je te remercie Isabelle c'est exactement ce qu'il me fallait.
J'en profite pour te demander si tu connai une macro qui me permettrai de
récupérer des lignes qui répondent à un critère contenu dans une des
celllules et de les recopier dans un autre fichier.
Merci de ton intérêt.


bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle


Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *





Avatar
Porter
C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter


bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle


Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *





Avatar
isabelle
bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle

C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter



bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle



Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *







Avatar
Porter
Salut Isabelle,
J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?


bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle

C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter



bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle



Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *










Avatar
isabelle
re bonjour Porter,

tu peut modifier comme ça,

CritèreFiltre = "DUPONT"
Nom = Application.Match("Nom", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

pour sélectionner la plage filtrer, s'il n'y a pas de données sur la
ligne 11
Range("A12").CurrentRegion
fera l'affaire. sinon tu peut déterminer cette plage par:

set plg = Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

tu peut aussi déterminer la 1èr ou 2èm ligne ainsi que la dernère ligne
du filtre,

Dim PremLigne As Long, DerLigne As Long
With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
'au cas ou
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
MsgBox "Première ligne visible : " & PremLigne
MsgBox "Dernière ligne visible : " & DerLigne
End With
Range("A" & PremLigne).Select

isabelle

J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?



bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle


C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter




bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle




Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *











Avatar
Porter
Re, encore moi tu diras lol !
En fait je crois que ce que je veux faire est plus simple que ça et qu'en
fait tout ce que tu m'a dis m'a quelque peu embrouillé vu que je suis novice
en macro.
J'ai essayé d'appliquer le principe et voilà la macro que j'ai pu faire ( et
qui ne fonctionne pas):

Sub Filtrer()
Dim CritèreFiltre As String
CritèreFiltre = "SMECO"
Nom = Application.Match("Centre Payeur", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre
Range("A12").CurrentRegion.Copy
Sheets.Add
ActiveSheet.Paste
Set Source = Workbooks("Relevé-Etudiant Essai.xls").Sheets("Relevé
Nominatif").Range("A12").CurrentRegion
Set dest = Workbooks("Relevé SMECO.xls").Sheets("Affiliés SMECO")
Source.Copy _
Destination:Þst.Range("A12")
End Sub

Je t'explique ce que cette macro devait me permettre de faire. Dans une
liste d'étudiants dans un tableau (Fichier Relevé-Etudiants, feuille Relevé
Nominatif) je voudrais rentrer des informations sur les lignes (les colonnes
comportant différents champs). Ensuite, j'aimerais que par macro
(automatiquement) les lignes correspondant à mon critère "SMECO" qui se
trouve dans la colonne 12 "Centre Payeur" se recopie (sans disparaître pour
autant de mon tableau principal) dans un autre tableau (Fichier Relevé SMECO
feuille Affiliés SMECO) qui est déjà crée mais reste vierge lorsqu'il n'y a
rien qui le concerne. Le tableau initial a sur la ligne 11 les intitulés et à
partir de la ligne 12 les informations ( c'est pour ça que j'ai fait A12). Le
tableau recevant l'extraction est similaire mais vierge, et je voudrai
recopier les lignes répondant à mon critère à partir de la ligne 12 comme
dans l'autre. Je n'ai pas besoin de créer une autre feuille (donc pas de
Sheets.Add je pense).
Dis moi ce qui ne va pas dans ma macro stp.
Merci sincèrement de ton aide et de ta compréhension.


re bonjour Porter,

tu peut modifier comme ça,

CritèreFiltre = "DUPONT"
Nom = Application.Match("Nom", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

pour sélectionner la plage filtrer, s'il n'y a pas de données sur la
ligne 11
Range("A12").CurrentRegion
fera l'affaire. sinon tu peut déterminer cette plage par:

set plg = Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

tu peut aussi déterminer la 1èr ou 2èm ligne ainsi que la dernère ligne
du filtre,

Dim PremLigne As Long, DerLigne As Long
With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
'au cas ou
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
MsgBox "Première ligne visible : " & PremLigne
MsgBox "Dernière ligne visible : " & DerLigne
End With
Range("A" & PremLigne).Select

isabelle

J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?



bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle


C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter




bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle




Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *














Avatar
isabelle
re bonjour Porter,

je croyais que les titres de colonne était en ligne 12,

si c'est en ligne 11, est ce que le filtre est lui aussi en ligne 11 ?

pour le copy il ne faut pas inclure la ligne de titre, est ce bien ça ?

isabelle


Re, encore moi tu diras lol !
En fait je crois que ce que je veux faire est plus simple que ça et qu'en
fait tout ce que tu m'a dis m'a quelque peu embrouillé vu que je suis novice
en macro.
J'ai essayé d'appliquer le principe et voilà la macro que j'ai pu faire ( et
qui ne fonctionne pas):

Sub Filtrer()
Dim CritèreFiltre As String
CritèreFiltre = "SMECO"
Nom = Application.Match("Centre Payeur", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre
Range("A12").CurrentRegion.Copy
Sheets.Add
ActiveSheet.Paste
Set Source = Workbooks("Relevé-Etudiant Essai.xls").Sheets("Relevé
Nominatif").Range("A12").CurrentRegion
Set dest = Workbooks("Relevé SMECO.xls").Sheets("Affiliés SMECO")
Source.Copy _
Destination:Þst.Range("A12")
End Sub

Je t'explique ce que cette macro devait me permettre de faire. Dans une
liste d'étudiants dans un tableau (Fichier Relevé-Etudiants, feuille Relevé
Nominatif) je voudrais rentrer des informations sur les lignes (les colonnes
comportant différents champs). Ensuite, j'aimerais que par macro
(automatiquement) les lignes correspondant à mon critère "SMECO" qui se
trouve dans la colonne 12 "Centre Payeur" se recopie (sans disparaître pour
autant de mon tableau principal) dans un autre tableau (Fichier Relevé SMECO
feuille Affiliés SMECO) qui est déjà crée mais reste vierge lorsqu'il n'y a
rien qui le concerne. Le tableau initial a sur la ligne 11 les intitulés et à
partir de la ligne 12 les informations ( c'est pour ça que j'ai fait A12). Le
tableau recevant l'extraction est similaire mais vierge, et je voudrai
recopier les lignes répondant à mon critère à partir de la ligne 12 comme
dans l'autre. Je n'ai pas besoin de créer une autre feuille (donc pas de
Sheets.Add je pense).
Dis moi ce qui ne va pas dans ma macro stp.
Merci sincèrement de ton aide et de ta compréhension.



re bonjour Porter,

tu peut modifier comme ça,

CritèreFiltre = "DUPONT"
Nom = Application.Match("Nom", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

pour sélectionner la plage filtrer, s'il n'y a pas de données sur la
ligne 11
Range("A12").CurrentRegion
fera l'affaire. sinon tu peut déterminer cette plage par:

set plg = Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

tu peut aussi déterminer la 1èr ou 2èm ligne ainsi que la dernère ligne
du filtre,

Dim PremLigne As Long, DerLigne As Long
With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
'au cas ou
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
MsgBox "Première ligne visible : " & PremLigne
MsgBox "Dernière ligne visible : " & DerLigne
End With
Range("A" & PremLigne).Select

isabelle


J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?




bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle



C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter





bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle





Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *















Avatar
Porter
Oui c'est exactement ça. Il ne faut pas recopier la ligne des titres parce
qu'ils sont déjà reporter dans le fichier d'extraction.
pour l'emplacement du filtre je ne sais pas quoi répondre exactement,
l'essentiel est qu'il doit s'appliquer sur les lignes 12 et suivantes.
Parcontre, en espérant que ce n'est pas abusé de ma part, la recopie des
lignes doit elle absolument reprendre les cellules de chaque colonne ou
est-ce que c'est possible de ne récupérer que les cellules souhaitées ( c'est
à dire en retirant par exemple 1 ou 2 cellules ce qui fait que les lignes
extraites s'étalant à l'origine sur 20 colonnes ne soit recopier en
s'allogeant que sur 18) Mais ça peut attendre si tu ne trouve pas le moyen,
je me débrouillerai.
Merci

re bonjour Porter,

je croyais que les titres de colonne était en ligne 12,

si c'est en ligne 11, est ce que le filtre est lui aussi en ligne 11 ?

pour le copy il ne faut pas inclure la ligne de titre, est ce bien ça ?

isabelle


Re, encore moi tu diras lol !
En fait je crois que ce que je veux faire est plus simple que ça et qu'en
fait tout ce que tu m'a dis m'a quelque peu embrouillé vu que je suis novice
en macro.
J'ai essayé d'appliquer le principe et voilà la macro que j'ai pu faire ( et
qui ne fonctionne pas):

Sub Filtrer()
Dim CritèreFiltre As String
CritèreFiltre = "SMECO"
Nom = Application.Match("Centre Payeur", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre
Range("A12").CurrentRegion.Copy
Sheets.Add
ActiveSheet.Paste
Set Source = Workbooks("Relevé-Etudiant Essai.xls").Sheets("Relevé
Nominatif").Range("A12").CurrentRegion
Set dest = Workbooks("Relevé SMECO.xls").Sheets("Affiliés SMECO")
Source.Copy _
Destination:Þst.Range("A12")
End Sub

Je t'explique ce que cette macro devait me permettre de faire. Dans une
liste d'étudiants dans un tableau (Fichier Relevé-Etudiants, feuille Relevé
Nominatif) je voudrais rentrer des informations sur les lignes (les colonnes
comportant différents champs). Ensuite, j'aimerais que par macro
(automatiquement) les lignes correspondant à mon critère "SMECO" qui se
trouve dans la colonne 12 "Centre Payeur" se recopie (sans disparaître pour
autant de mon tableau principal) dans un autre tableau (Fichier Relevé SMECO
feuille Affiliés SMECO) qui est déjà crée mais reste vierge lorsqu'il n'y a
rien qui le concerne. Le tableau initial a sur la ligne 11 les intitulés et à
partir de la ligne 12 les informations ( c'est pour ça que j'ai fait A12). Le
tableau recevant l'extraction est similaire mais vierge, et je voudrai
recopier les lignes répondant à mon critère à partir de la ligne 12 comme
dans l'autre. Je n'ai pas besoin de créer une autre feuille (donc pas de
Sheets.Add je pense).
Dis moi ce qui ne va pas dans ma macro stp.
Merci sincèrement de ton aide et de ta compréhension.



re bonjour Porter,

tu peut modifier comme ça,

CritèreFiltre = "DUPONT"
Nom = Application.Match("Nom", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

pour sélectionner la plage filtrer, s'il n'y a pas de données sur la
ligne 11
Range("A12").CurrentRegion
fera l'affaire. sinon tu peut déterminer cette plage par:

set plg = Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

tu peut aussi déterminer la 1èr ou 2èm ligne ainsi que la dernère ligne
du filtre,

Dim PremLigne As Long, DerLigne As Long
With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
'au cas ou
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
MsgBox "Première ligne visible : " & PremLigne
MsgBox "Dernière ligne visible : " & DerLigne
End With
Range("A" & PremLigne).Select

isabelle


J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?




bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle



C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter





bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle





Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *


















Avatar
isabelle
re bonjour Porter,

puisque la commande .AutoFilter.Range.SpecialCells(xlCellTypeVisible)
inclue automatiquement la ligne de titre, il faut déterminer quel en est la première ligne et la dernière ligne.
si le résultat du filtre ne donne aucun résultat la première ligne sera automatiquement la ligne de titre
donc on pourrait ajouter un test
si PremLigne = 1 then exit sub 'aucun copy

Sub Filtrer2()
Dim CritèreFiltre As String, plg As String
Dim PremLigne As Long, DerLigne As Long
CritèreFiltre = "SMECO"
Nom = Application.Match("Centre Payeur", Rows(11), 0)
If Not Range("A11").AutoFilter Then Range("A11:M11").AutoFilter
Range("A11").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

With Sheets("Relevé Nominatif").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
End With

plg = Range("A" & PremLigne & ":E" & DerLigne).Address ' colonne à déterminer

Set Source = Workbooks("Relevé-Etudiant Essai.xls").Sheets("Relevé Nominatif").Range(plg)
Set dest = Workbooks("Relevé SMECO.xls").Sheets("Affiliés SMECO")
Source.Copy Destination:Þst.Range("A12")
End Sub

isabelle


Oui c'est exactement ça. Il ne faut pas recopier la ligne des titres parce
qu'ils sont déjà reporter dans le fichier d'extraction.
pour l'emplacement du filtre je ne sais pas quoi répondre exactement,
l'essentiel est qu'il doit s'appliquer sur les lignes 12 et suivantes.
Parcontre, en espérant que ce n'est pas abusé de ma part, la recopie des
lignes doit elle absolument reprendre les cellules de chaque colonne ou
est-ce que c'est possible de ne récupérer que les cellules souhaitées ( c'est
à dire en retirant par exemple 1 ou 2 cellules ce qui fait que les lignes
extraites s'étalant à l'origine sur 20 colonnes ne soit recopier en
s'allogeant que sur 18) Mais ça peut attendre si tu ne trouve pas le moyen,
je me débrouillerai.
Merci


re bonjour Porter,

je croyais que les titres de colonne était en ligne 12,

si c'est en ligne 11, est ce que le filtre est lui aussi en ligne 11 ?

pour le copy il ne faut pas inclure la ligne de titre, est ce bien ça ?

isabelle



Re, encore moi tu diras lol !
En fait je crois que ce que je veux faire est plus simple que ça et qu'en
fait tout ce que tu m'a dis m'a quelque peu embrouillé vu que je suis novice
en macro.
J'ai essayé d'appliquer le principe et voilà la macro que j'ai pu faire ( et
qui ne fonctionne pas):

Sub Filtrer()
Dim CritèreFiltre As String
CritèreFiltre = "SMECO"
Nom = Application.Match("Centre Payeur", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre
Range("A12").CurrentRegion.Copy
Sheets.Add
ActiveSheet.Paste
Set Source = Workbooks("Relevé-Etudiant Essai.xls").Sheets("Relevé
Nominatif").Range("A12").CurrentRegion
Set dest = Workbooks("Relevé SMECO.xls").Sheets("Affiliés SMECO")
Source.Copy _
Destination:Þst.Range("A12")
End Sub

Je t'explique ce que cette macro devait me permettre de faire. Dans une
liste d'étudiants dans un tableau (Fichier Relevé-Etudiants, feuille Relevé
Nominatif) je voudrais rentrer des informations sur les lignes (les colonnes
comportant différents champs). Ensuite, j'aimerais que par macro
(automatiquement) les lignes correspondant à mon critère "SMECO" qui se
trouve dans la colonne 12 "Centre Payeur" se recopie (sans disparaître pour
autant de mon tableau principal) dans un autre tableau (Fichier Relevé SMECO
feuille Affiliés SMECO) qui est déjà crée mais reste vierge lorsqu'il n'y a
rien qui le concerne. Le tableau initial a sur la ligne 11 les intitulés et à
partir de la ligne 12 les informations ( c'est pour ça que j'ai fait A12). Le
tableau recevant l'extraction est similaire mais vierge, et je voudrai
recopier les lignes répondant à mon critère à partir de la ligne 12 comme
dans l'autre. Je n'ai pas besoin de créer une autre feuille (donc pas de
Sheets.Add je pense).
Dis moi ce qui ne va pas dans ma macro stp.
Merci sincèrement de ton aide et de ta compréhension.




re bonjour Porter,

tu peut modifier comme ça,

CritèreFiltre = "DUPONT"
Nom = Application.Match("Nom", Rows(12), 0)
If Not Range("A12").AutoFilter Then Range("A12").AutoFilter
Range("A12").AutoFilter Field:=Nom, Criteria1:="" & CritèreFiltre

pour sélectionner la plage filtrer, s'il n'y a pas de données sur la
ligne 11
Range("A12").CurrentRegion
fera l'affaire. sinon tu peut déterminer cette plage par:

set plg = Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

tu peut aussi déterminer la 1èr ou 2èm ligne ainsi que la dernère ligne
du filtre,

Dim PremLigne As Long, DerLigne As Long
With Sheets("Feuil1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If .Areas(1).Rows.Count > 1 Then PremLigne = .Rows(2).Row _
Else PremLigne = .Areas(2).Row
'au cas ou
DerLigne = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Row
MsgBox "Première ligne visible : " & PremLigne
MsgBox "Dernière ligne visible : " & DerLigne
End With
Range("A" & PremLigne).Select

isabelle



J'ai essayé ta technique pour le filtre, mais il y a qqch qui me bloque: le
CritèreFiltre=InputBox("Critère du filtre, colonne Nom (1)") me pose
problème. J'aurais voulu prédéfinir mon critère dans ma macro et non dans une
InputBox.
En plus, je n'arrive pas à l'utiliser. Ne peut-on pas définir le critère
directement? Genre le critère se trouve dans la colonne12 (intitulée "NOM")
lorsque la cellule affiche "DUPONT".
Merci.
Aussi, un autre renseignement: le Range("A1") signifie que le filtre
s'applique à partir de la cellule A1? Donc on peut modifier le départ dans le
fichier source et la copie dans le fichier de destination? C'est à dire que
la copie commence à partir de la cellule A12 par exemple?





bonjour Porter,

une fois la plage filtrée,

Set Source =
Workbooks("zaza1.xls").Sheets("Feuil5").Range("A1").CurrentRegion
Set dest = Workbooks("zaza2.xls").Sheets("Feuil4")
Source.Copy _
Destination:Þst.Range("A1")

isabelle




C'est encore moi. Je vois que tu as répondu à Pierref (juste en dessous de
moi) sur le sujet que je viens de te demander. Je vais d'abord tenter kom tu
le lui a dit mais cette méthode marche-t-elle lorsqu'on veut carrément
changer de fichier (pas le même classeur). Et aussi, de quelle manière
rentre-t-on le nom du fichier source?
Merci encore de ta disponibilité.
Porter






bonjour Porter,

Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub

isabelle






Bonjour,
j'ai créé une macro qui s'exécute automatiquement à l'ouverture de mon
classeur en l'appelant dans ThisWorkbook avec un Workbook_Open().
Le problème est qu'excel refuse de me l'ouvrir lorsque je mets une
protection sur ma feuille. Y a-t-il un moyen de contourner cela et de faire
exécuter ma macro à l'ouverture de ma feuille malgré la protection?
Merci pour vos propositions.
Porter *



















1 2