J'ai en col B d'une grande BDD des N° qui se suivent 1, 2, 3... Je
souhaiterais qu'une boite de dialogue me demande ce que je souhaite filtrer
dans cette col B (par exemple entre 100 et 150) et qu'ensuite ca lance mon
mailing préparer en amont dans Word avec les champs souhaité également déjà
préparé dans Word mais que des lignes entre 100 et 150.
Puis que j'ai une archive de ces 50 lignes et à quelle date j'ai fais ce
mailing dans une autre feuil Excel "archive mailing" et à chaque fois que je
relancerais le mailing, je souhaiterais que ca s'ajoute à cette feuil.
Pas sure de me faire comprendre.... dites-moi...
Je sais que je peux le faire par l'enregistreur en utilisant des filtres
élaborés pour choisir facilement les intervalles de ligne, mais je sent que
ca va être long, n'y a t'il pas une solution rapide.
Merci
manu
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
'----------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à adapter With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin End With End With End Sub '-----------------------------------------------
Bonjour,
Tu veux quelque chose comme ceci :
'-----------------------------------------------
Sub test()
Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
End With
End With
End Sub
'-----------------------------------------------
'----------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à adapter With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin End With End With End Sub '-----------------------------------------------
Manu
Exactement Mich ! Et qu'ensuite ca me colle en valeur les résultats des données de ce filtre et non les titres dans la feuil "archive mailing" dans la dernière cellule pleine de la colonne A (j'ai cru comprendre qu'en VBA, il fallait partir de la fin et remonter), dans la ligne 1 de la feuil "archive mailing" il y aura déjà les titres
Ensuite j'insèrerais une col Vide en A pour titre "Date mailing" qui indiqueras la date du jour ou j'aurais envoyé cette macro. Cela me permettra dans le temps de savoir à quelle date j'aurais envoyé le mailing.
Merci
manu
"MichD" a écrit dans le message de groupe de discussion : m0hgpf$pvo$
Bonjour,
Tu veux quelque chose comme ceci :
'----------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à adapter With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin End With End With End Sub '-----------------------------------------------
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
Exactement Mich ! Et qu'ensuite ca me colle en valeur les résultats des
données de ce filtre et non les titres dans la feuil "archive mailing" dans
la dernière cellule pleine de la colonne A (j'ai cru comprendre qu'en VBA,
il fallait partir de la fin et remonter), dans la ligne 1 de la feuil
"archive mailing" il y aura déjà les titres
Ensuite j'insèrerais une col Vide en A pour titre "Date mailing" qui
indiqueras la date du jour ou j'aurais envoyé cette macro. Cela me permettra
dans le temps de savoir à quelle date j'aurais envoyé le mailing.
Merci
manu
"MichD" a écrit dans le message de groupe de discussion :
m0hgpf$pvo$1@speranza.aioe.org...
Bonjour,
Tu veux quelque chose comme ceci :
'-----------------------------------------------
Sub test()
Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à
adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
End With
End With
End Sub
'-----------------------------------------------
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Exactement Mich ! Et qu'ensuite ca me colle en valeur les résultats des données de ce filtre et non les titres dans la feuil "archive mailing" dans la dernière cellule pleine de la colonne A (j'ai cru comprendre qu'en VBA, il fallait partir de la fin et remonter), dans la ligne 1 de la feuil "archive mailing" il y aura déjà les titres
Ensuite j'insèrerais une col Vide en A pour titre "Date mailing" qui indiqueras la date du jour ou j'aurais envoyé cette macro. Cela me permettra dans le temps de savoir à quelle date j'aurais envoyé le mailing.
Merci
manu
"MichD" a écrit dans le message de groupe de discussion : m0hgpf$pvo$
Bonjour,
Tu veux quelque chose comme ceci :
'----------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") ' nom de la feuille et adresse de la plage à adapter With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin End With End With End Sub '-----------------------------------------------
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
MichD
À titre d'information supplémentaire :
A ) Suppose que ta liste existe dans un document Excel ayant une extension .xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste existante / dans la fenêtre ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre suivante : Excel Files / Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre suivante : Choix du NOM de la table des données du fichier Excel / dans la fenêtre suivante : Cocher la case à cocher dans le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des destinataires" / Tu as la table "NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la commande "Filtrer", un clic et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et les critères que tu veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu as retenu dans ton fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
À titre d'information supplémentaire :
A ) Suppose que ta liste existe dans un document Excel ayant une extension .xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste existante / dans la fenêtre
ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre suivante : Excel Files /
Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre suivante : Choix du NOM
de la table des données du fichier Excel / dans la fenêtre suivante : Cocher la case à cocher dans
le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des destinataires" / Tu as la table
"NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la commande "Filtrer", un clic
et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et les critères que tu
veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu as retenu dans ton
fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
A ) Suppose que ta liste existe dans un document Excel ayant une extension .xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste existante / dans la fenêtre ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre suivante : Excel Files / Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre suivante : Choix du NOM de la table des données du fichier Excel / dans la fenêtre suivante : Cocher la case à cocher dans le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des destinataires" / Tu as la table "NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la commande "Filtrer", un clic et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et les critères que tu veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu as retenu dans ton fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
Manu
Pas de soucis pour cela Mich, je l'ai déjà prévu, mais ce qui m'intéresse surtout, c'est l'archive de ce qui sera envoyé dans la Feuil "archive mailing" à chaque fois que je choisirais un intervalle de ligne.
Manu
"MichD" a écrit dans le message de groupe de discussion : m0hin5$v4u$
À titre d'information supplémentaire :
A ) Suppose que ta liste existe dans un document Excel ayant une extension .xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste existante / dans la fenêtre ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre suivante : Excel Files / Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre suivante : Choix du NOM de la table des données du fichier Excel / dans la fenêtre suivante : Cocher la case à cocher dans le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des destinataires" / Tu as la table "NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la commande "Filtrer", un clic et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et les critères que tu veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu as retenu dans ton fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
Pas de soucis pour cela Mich, je l'ai déjà prévu, mais ce qui m'intéresse
surtout, c'est l'archive de ce qui sera envoyé dans la Feuil "archive
mailing" à chaque fois que je choisirais un intervalle de ligne.
Manu
"MichD" a écrit dans le message de groupe de discussion :
m0hin5$v4u$1@speranza.aioe.org...
À titre d'information supplémentaire :
A ) Suppose que ta liste existe dans un document Excel ayant une extension
.xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste
existante / dans la fenêtre
ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre
suivante : Excel Files /
Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre
suivante : Choix du NOM
de la table des données du fichier Excel / dans la fenêtre suivante : Cocher
la case à cocher dans
le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour
actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des
destinataires" / Tu as la table
"NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la
commande "Filtrer", un clic
et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et
les critères que tu
veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu
as retenu dans ton
fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Pas de soucis pour cela Mich, je l'ai déjà prévu, mais ce qui m'intéresse surtout, c'est l'archive de ce qui sera envoyé dans la Feuil "archive mailing" à chaque fois que je choisirais un intervalle de ligne.
Manu
"MichD" a écrit dans le message de groupe de discussion : m0hin5$v4u$
À titre d'information supplémentaire :
A ) Suppose que ta liste existe dans un document Excel ayant une extension .xlsx
1 - Donne un "NOM" à la plage de données.
B ) Maintenant ouvre Word :
1 - Menu Publipostage / Sélection des destinataires / Utiliser une liste existante / dans la fenêtre ouvrante : "Nouvelle source" / Nouvelle fenêtre : DSN-ODBC / Fenêtre suivante : Excel Files / Fenêtre suivante : choix du répertoire et du fichier Excel (.xlsx) / Fenêtre suivante : Choix du NOM de la table des données du fichier Excel / dans la fenêtre suivante : Cocher la case à cocher dans le bas de la fenêtre : Toujours essayer d'utiliser ce fichier pour actualiser les données / Terminer
2 - Revenu dans Word, utilise la commande : "Modifier la liste des destinataires" / Tu as la table "NOM" qui apparaît dans une fenêtre / en bas de cette fenêtre, tu as la commande "Filtrer", un clic et tu te retrouves dans une fenêtre où tu peux choisir le champ du filtre et les critères que tu veux appliquer. Tu fermes par OK - OK -
3 - Maintenant, tu es prêt à lancer ton publipostage avec les données que tu as retenu dans ton fichier Word.
Nul besoin de faire un filtre dans Excel au préalable!
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
MichD
Adapte le nom des feuilles et des plages de cellules au besoin.
'------------------------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin adrfiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(nb).EntireRow = .Range(adrfiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '-------------------------------------------------------------------------
Adapte le nom des feuilles et des plages de cellules au besoin.
'-------------------------------------------------------------------------
Sub test()
Dim Début As Variant, Fin As Variant
Dim Dest As Range, Rg As Range, Nb As Long
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1")
With .Range("A1:D" & .Range("A65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
adrfiltre = .Resize(.Rows.Count - 1).Offset(1) _
.SpecialCells(xlCellTypeVisible).Address
nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing")
Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1)
End With
Dest.Resize(nb).EntireRow = .Range(adrfiltre).Value
.AutoFilter
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-------------------------------------------------------------------------
Adapte le nom des feuilles et des plages de cellules au besoin.
'------------------------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin adrfiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(nb).EntireRow = .Range(adrfiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '-------------------------------------------------------------------------
MichD
Quelques petites retouches :
'-------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '--------------------------------------------------------
Quelques petites retouches :
'--------------------------------------------------------
Sub test()
Dim Début As Variant, Fin As Variant
Dim Dest As Range, Rg As Range, Nb As Long
Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1")
With .Range("A1:D" & .Range("A65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _
.SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then
Err.Clear
.AutoFilter
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing")
Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1)
End With
Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
.AutoFilter
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'--------------------------------------------------------
'-------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '--------------------------------------------------------
Manu
Je n'ais pas le temps de tester ce soir Mich, je m'en occupe demain et te tiens au courant ! Encore merci pour ton soutien !
manu
"MichD" a écrit dans le message de groupe de discussion : m0hlik$71g$
Quelques petites retouches :
'-------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '--------------------------------------------------------
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
Je n'ais pas le temps de tester ce soir Mich, je m'en occupe demain et te
tiens au courant ! Encore merci pour ton soutien !
manu
"MichD" a écrit dans le message de groupe de discussion :
m0hlik$71g$1@speranza.aioe.org...
Quelques petites retouches :
'--------------------------------------------------------
Sub test()
Dim Début As Variant, Fin As Variant
Dim Dest As Range, Rg As Range, Nb As Long
Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1")
With .Range("A1:D" & .Range("A65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _
.SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then
Err.Clear
.AutoFilter
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
End If
Nb =
Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing")
Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1)
End With
Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
.AutoFilter
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'--------------------------------------------------------
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Je n'ais pas le temps de tester ce soir Mich, je m'en occupe demain et te tiens au courant ! Encore merci pour ton soutien !
manu
"MichD" a écrit dans le message de groupe de discussion : m0hlik$71g$
Quelques petites retouches :
'-------------------------------------------------------- Sub test() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("Feuil1") With .Range("A1:D" & .Range("A65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Date mailing") Set Dest = .Range("A" & .Range("A65536").End(xlUp).Row + 1) End With Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub '--------------------------------------------------------
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
MichD
À cette ligne de code dans la procédure : Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci : Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value
À cette ligne de code dans la procédure :
Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci :
Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value
À cette ligne de code dans la procédure : Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci : Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value
Manu
Bonjour,
Je n'arrive pas à adapter à mon tableau, pour les filtres, pas de soucis, c'est le collage qui pose un problème... j'explique mon tableau :
J'ai des colonnes remplies de A à AA avec environ 3000 lignes pour l'instant. Mes titres sont bien sur en ligne 1 (aussi bien dans la feuil source "fbb" que la feuil "Archive mailing". En colonne B j'ai mes chiffres à la suite 1, 2, 3 etc c'est sur cette colonne que le filtre s'effectue, et ca fonctionne. En revanche le collage va mal, ca colle dans la feuil "archive" les résultats de la colonne C à la colonne G. en colonne A et B il y a rien, et après la colonne G il n'y a que des #N/A
Ce que je souhaiterais, c'est que ca colle tous les résultats du filtre de la la colonne A à AA.
Le code que j'ai tenté adapté sans résultat :
Sub testmich() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("fbb") With .Range("b1:aa" & .Range("b65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Archive mailing") Set Dest = .Range("c" & .Range("c65536").End(xlUp).Row + 1) End With Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub
Dans un 2ème temps, je souhaiterais inserer une colonne Vide en A pour y mettre la date du jour où j'ai lancé la macro, mais je ne sais pas si je dois le prévoir en amont dans ma feuil "archive" en mettant tout de suite en col A "Date mailing" puis coller les donner de la feuil "fbb" de B à AB...
Merci
Manu
"MichD" a écrit dans le message de groupe de discussion : m0j5jq$f7b$
À cette ligne de code dans la procédure : Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci : Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
Bonjour,
Je n'arrive pas à adapter à mon tableau, pour les filtres, pas de soucis,
c'est le collage qui pose un problème... j'explique mon tableau :
J'ai des colonnes remplies de A à AA avec environ 3000 lignes pour
l'instant. Mes titres sont bien sur en ligne 1 (aussi bien dans la feuil
source "fbb" que la feuil "Archive mailing". En colonne B j'ai mes chiffres
à la suite 1, 2, 3 etc c'est sur cette colonne que le filtre s'effectue, et
ca fonctionne.
En revanche le collage va mal, ca colle dans la feuil "archive" les
résultats de la colonne C à la colonne G. en colonne A et B il y a rien, et
après la colonne G il n'y a que des #N/A
Ce que je souhaiterais, c'est que ca colle tous les résultats du filtre de
la la colonne A à AA.
Le code que j'ai tenté adapté sans résultat :
Sub testmich()
Dim Début As Variant, Fin As Variant
Dim Dest As Range, Rg As Range, Nb As Long
Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1)
If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1)
If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("fbb")
With .Range("b1:aa" & .Range("b65536").End(xlUp).Row)
.AutoFilter field:=1, Criteria1:=">=" & Début, _
Operator:=xlAnd, Criteria2:="<=" & Fin
AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _
.SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then
Err.Clear
.AutoFilter
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
End If
Nb =
Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Archive mailing")
Set Dest = .Range("c" & .Range("c65536").End(xlUp).Row + 1)
End With
Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value =
.Range(AdrFiltre).Value
.AutoFilter
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Dans un 2ème temps, je souhaiterais inserer une colonne Vide en A pour y
mettre la date du jour où j'ai lancé la macro, mais je ne sais pas si je
dois le prévoir en amont dans ma feuil "archive" en mettant tout de suite en
col A "Date mailing" puis coller les donner de la feuil "fbb" de B à AB...
Merci
Manu
"MichD" a écrit dans le message de groupe de discussion :
m0j5jq$f7b$1@speranza.aioe.org...
À cette ligne de code dans la procédure :
Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci :
Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value =
.Range(AdrFiltre).Value
---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Je n'arrive pas à adapter à mon tableau, pour les filtres, pas de soucis, c'est le collage qui pose un problème... j'explique mon tableau :
J'ai des colonnes remplies de A à AA avec environ 3000 lignes pour l'instant. Mes titres sont bien sur en ligne 1 (aussi bien dans la feuil source "fbb" que la feuil "Archive mailing". En colonne B j'ai mes chiffres à la suite 1, 2, 3 etc c'est sur cette colonne que le filtre s'effectue, et ca fonctionne. En revanche le collage va mal, ca colle dans la feuil "archive" les résultats de la colonne C à la colonne G. en colonne A et B il y a rien, et après la colonne G il n'y a que des #N/A
Ce que je souhaiterais, c'est que ca colle tous les résultats du filtre de la la colonne A à AA.
Le code que j'ai tenté adapté sans résultat :
Sub testmich() Dim Début As Variant, Fin As Variant Dim Dest As Range, Rg As Range, Nb As Long Dim AdrFiltre As String
Début = Application.InputBox(prompt:="Le numéro de départ?", Type:=1) If Début = False Then MsgBox "Opération annulée": Exit Sub
Fin = Application.InputBox(prompt:="Le numéro de la fin?", Type:=1) If Fin = False Then MsgBox "Opération annulée": Exit Sub
With Worksheets("fbb") With .Range("b1:aa" & .Range("b65536").End(xlUp).Row) .AutoFilter field:=1, Criteria1:=">=" & Début, _ Operator:=xlAnd, Criteria2:="<=" & Fin AdrFiltre = .Resize(.Rows.Count - 1).Offset(1) _ .SpecialCells(xlCellTypeVisible).Address
If Err.Number <> 0 Then Err.Clear .AutoFilter Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub End If
Nb = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible)) - 1
With Worksheets("Archive mailing") Set Dest = .Range("c" & .Range("c65536").End(xlUp).Row + 1) End With Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value .AutoFilter End With End With Application.ScreenUpdating = True Application.EnableEvents = True
End Sub
Dans un 2ème temps, je souhaiterais inserer une colonne Vide en A pour y mettre la date du jour où j'ai lancé la macro, mais je ne sais pas si je dois le prévoir en amont dans ma feuil "archive" en mettant tout de suite en col A "Date mailing" puis coller les donner de la feuil "fbb" de B à AB...
Merci
Manu
"MichD" a écrit dans le message de groupe de discussion : m0j5jq$f7b$
À cette ligne de code dans la procédure : Dest.Resize(Nb).EntireRow = .Range(AdrFiltre).Value
Il en manque un petit bout ! Corrige cette ligne de code comme ceci : Dest.Resize(Nb, .CurrentRegion.Columns.Count).Value = .Range(AdrFiltre).Value
--- Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active. http://www.avast.com
MichD
Exécute la macro dans le classeur : http://cjoint.com/?DJcrPP94tKY
Exécute la macro dans le classeur : http://cjoint.com/?DJcrPP94tKY