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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
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 *
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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
isabellere 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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
isabellere 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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
isabellere 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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
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 *
correction pour le test,
si PremLigne = 11 then exit sub 'aucun copy
isabellere 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
isabelleOui 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.
Mercire 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 ?
isabelleRe, 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
isabelleJ'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")
isabelleC'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é.
Porterbonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
bonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
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 *
bonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Mercibonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Merci
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 *
Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Mercibonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
Bonjour Samuel,
le mathode unprotect fonctionne très bien chez moi.
Vérifie deux choses:
1.Le code que tu as mis dans ta macro est-il exactement le même que celui
utilisé pour protéger ta feuille?
2.Ta feuille est-elle protégée avant l'exécution de ta macro? Pour ça, ouvre
ta feuille même si la macro ne s'exécute en contournant le débogage. Ensuite
tu vérifie bien dans MenuOutil/Protection que ta feuille est bien
protégée(s'il le faut tu la reprotège). Tu enregistre bien le tout avant de
refermer ton fichier excel.
Ensuite essaie de l'ouvrir à nouveau.Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Mercibonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *
Bonjour Samuel,
le mathode unprotect fonctionne très bien chez moi.
Vérifie deux choses:
1.Le code que tu as mis dans ta macro est-il exactement le même que celui
utilisé pour protéger ta feuille?
2.Ta feuille est-elle protégée avant l'exécution de ta macro? Pour ça, ouvre
ta feuille même si la macro ne s'exécute en contournant le débogage. Ensuite
tu vérifie bien dans MenuOutil/Protection que ta feuille est bien
protégée(s'il le faut tu la reprotège). Tu enregistre bien le tout avant de
refermer ton fichier excel.
Ensuite essaie de l'ouvrir à nouveau.
Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Merci
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 *
Bonjour Samuel,
le mathode unprotect fonctionne très bien chez moi.
Vérifie deux choses:
1.Le code que tu as mis dans ta macro est-il exactement le même que celui
utilisé pour protéger ta feuille?
2.Ta feuille est-elle protégée avant l'exécution de ta macro? Pour ça, ouvre
ta feuille même si la macro ne s'exécute en contournant le débogage. Ensuite
tu vérifie bien dans MenuOutil/Protection que ta feuille est bien
protégée(s'il le faut tu la reprotège). Tu enregistre bien le tout avant de
refermer ton fichier excel.
Ensuite essaie de l'ouvrir à nouveau.Bonjour,
je rencontre le même problème que porter sauf que la methode unprotect
qui devait résoudre mon problème échoue lamentablement sur mon objet
worksheet (comme une baleine sur une plage).
la macro n'est pourtant pas compliquée
il s'agit d'insérer une ligne dans une feuille avec un format prédéfini
elle marche très bien tant que la feuille n'est pas protégée
mais quand celle ci est protégée, c'est l'échec
j'ai essayé l'enregistreur de macro pour voir si on avait le même code et
c'est bien le cas
une idée?
Mercibonjour Porter,
Private Sub Workbook_Open()
Sheets("Feuil1").Unprotect Password:="zaza"
' ta macro
Sheets("Feuil1").Protect Password:="zaza"
End Sub
isabelleBonjour,
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 *