J'ai écrit une macro qui exporte une base de données Excel vers un nouveau
fichier (Excel).
Dans ce nouveau fichier, je procède alors à la suppression des lignes de ma
base non pertinentes avec les paramètres de l'extrait (j'envoie ces fichiers
à différentes personnes qui n'ont pas besoin de connaître les données
concernant les autres).
Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce
nouveau fichier. Voici la commande que j'utilise:
Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la
ligne, supprimer le contenu de ses cellules… Seule la suppression pure et
simple de la ligne ne produit aucun résultat.
J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option
particulière à cocher dans les options d'Excel pour effectuer ce type
d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter
(c'est ce que j'avais commencé par faire), mais le pb est que les lignes
masquées par le filtre sont aussi copiées lors de l'export et que chacun de
mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant le
filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de
votre aide!
tu filtres, tu sélectionnes toutes les lignes résultantes, tu vas dans Edition --> Atteindre --> Cellules --> Cellules visibles seulement.
Puis tu fais ton Copier/Coller.
Les lignes masquées n'apparaîtront pas dans le tableau exporté...
Ca marche ?
CAP2
Clément Marcotte
Bonjour,
Voici une réponse qui n'en n'est pas une, mais bon. Je serais tenté de le faire autrement.
Tu aurais un fichier-maître qui te servirait de base. Puis avec des requêtes que tu bâtirais avec MsQuery (Outils-Données-Données Externes - Créer une requête ou diretement dans des programmes avec ADO, tu prendrais les données pertinentes.
Cela t'éviterait d'effacer à chaque fois; avec tous les risques que cela comporte.
"Greg" a écrit dans le message de news:
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau fichier (Excel). Dans ce nouveau fichier, je procède alors à la suppression des lignes de ma base non pertinentes avec les paramètres de l'extrait (j'envoie ces fichiers à différentes personnes qui n'ont pas besoin de connaître les données
concernant les autres). Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce nouveau fichier. Voici la commande que j'utilise: Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la ligne, supprimer le contenu de ses cellules. Seule la suppression pure et simple de la ligne ne produit aucun résultat. J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option particulière à cocher dans les options d'Excel pour effectuer ce type d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter (c'est ce que j'avais commencé par faire), mais le pb est que les lignes masquées par le filtre sont aussi copiées lors de l'export et que chacun de mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant le filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de votre aide!
Grégory
Bonjour,
Voici une réponse qui n'en n'est pas une, mais bon. Je serais tenté de le
faire autrement.
Tu aurais un fichier-maître qui te servirait de base. Puis avec des requêtes
que tu bâtirais avec MsQuery (Outils-Données-Données Externes - Créer une
requête ou diretement dans des programmes avec ADO, tu prendrais les données
pertinentes.
Cela t'éviterait d'effacer à chaque fois; avec tous les risques que cela
comporte.
"Greg" <Greg@discussions.microsoft.com> a écrit dans le message de news:
34481ECC-050B-497B-A956-504A3E2A7545@microsoft.com...
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau
fichier (Excel).
Dans ce nouveau fichier, je procède alors à la suppression des lignes de
ma
base non pertinentes avec les paramètres de l'extrait (j'envoie ces
fichiers
à différentes personnes qui n'ont pas besoin de connaître les données
concernant les autres).
Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce
nouveau fichier. Voici la commande que j'utilise:
Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la
ligne, supprimer le contenu de ses cellules. Seule la suppression pure et
simple de la ligne ne produit aucun résultat.
J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option
particulière à cocher dans les options d'Excel pour effectuer ce type
d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter
(c'est ce que j'avais commencé par faire), mais le pb est que les lignes
masquées par le filtre sont aussi copiées lors de l'export et que chacun
de
mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant
le
filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de
votre aide!
Voici une réponse qui n'en n'est pas une, mais bon. Je serais tenté de le faire autrement.
Tu aurais un fichier-maître qui te servirait de base. Puis avec des requêtes que tu bâtirais avec MsQuery (Outils-Données-Données Externes - Créer une requête ou diretement dans des programmes avec ADO, tu prendrais les données pertinentes.
Cela t'éviterait d'effacer à chaque fois; avec tous les risques que cela comporte.
"Greg" a écrit dans le message de news:
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau fichier (Excel). Dans ce nouveau fichier, je procède alors à la suppression des lignes de ma base non pertinentes avec les paramètres de l'extrait (j'envoie ces fichiers à différentes personnes qui n'ont pas besoin de connaître les données
concernant les autres). Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce nouveau fichier. Voici la commande que j'utilise: Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la ligne, supprimer le contenu de ses cellules. Seule la suppression pure et simple de la ligne ne produit aucun résultat. J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option particulière à cocher dans les options d'Excel pour effectuer ce type d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter (c'est ce que j'avais commencé par faire), mais le pb est que les lignes masquées par le filtre sont aussi copiées lors de l'export et que chacun de mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant le filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de votre aide!
Grégory
Herdet
Bonsoir Greg, C'est quand même étonnant ce blocage car en général Rows("15:21").Delete Shift:=xlUp fonctionne toujours bien. La solution qui consite à transférer toute la base pis supprimer les lignes inutiles me paraît lourde et peu rapide. Je pense qu'il est préférable de transférer dans le classeur destination que les données concernées avec la ligne de champs bien sûr. Je te donne ci-dessous une procédure à adapter à ta base. J'ai recréé en VBA quelques fonctions de feuilles très utiles dont EQUIVAL et NBSI qui revoie une valeur ou 0 Cordialement Robert '------------------------------------------------------------------------------------ Sub Transfert() ' 1)trier la base source par les noms des personnes Range("G1:J500").Sort Key1:=Range("G2"), Order1:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal ' 2)copier et coller la ligne des champs dans le nouveau classeur ActiveSheet.Rows("1:1").Copy Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A1") ' 3) sélectionner les lignes de la personne concernée (Toto 1) LiD à LiF ' exemple avec noms des personnes dans la colonne A LiD = EQUIVAL("Toto 1", Range("A:A"), 0) LiF = LiD + NBSI(Range("A:A"), "Toto 1") - 1 ' 4) les copier et les coller dans le classeur destination ActiveSheet.Rows(LiD & ":" & LiF).Copy Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A2") Workbooks("Clas_dest").Activate End Sub '--------------------------------------------------------------------------------- Function EQUIVAL(Val_Ch As Variant, Tableau As Range, Mode_Rech As Integer) As Variant ' fonctionnement identique à la fonction EQUIV de feuille de calcul EQUIVAL = 0 On Error Resume Next EQUIVAL = Application.WorksheetFunction.Match(Val_Ch, Tableau, Mode_Rech) On Error GoTo 0 End Function '---------------------------------------------------------------------------------- Function NBSI(Tableau As Range, ByVal Val_Test As String) As Variant ' fonctionnement identique à la fonction NB de feuille de calcul NBSI = 0 If IsError(Application.WorksheetFunction.CountIf(Tableau, "=" & Val_Test)) = False Then NBSI = Application.WorksheetFunction.CountIf(Tableau, "=" & Val_Test) End If End Function
"Greg" a écrit dans le message de news:
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau fichier (Excel). Dans ce nouveau fichier, je procède alors à la suppression des lignes de ma base non pertinentes avec les paramètres de l'extrait (j'envoie ces fichiers à différentes personnes qui n'ont pas besoin de connaître les données concernant les autres). Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce nouveau fichier. Voici la commande que j'utilise: Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la ligne, supprimer le contenu de ses cellules. Seule la suppression pure et simple de la ligne ne produit aucun résultat. J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option particulière à cocher dans les options d'Excel pour effectuer ce type d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter (c'est ce que j'avais commencé par faire), mais le pb est que les lignes masquées par le filtre sont aussi copiées lors de l'export et que chacun de mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant le filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de votre aide!
Grégory
Bonsoir Greg,
C'est quand même étonnant ce blocage car en général Rows("15:21").Delete
Shift:=xlUp fonctionne toujours bien.
La solution qui consite à transférer toute la base pis supprimer les lignes
inutiles me paraît lourde et peu rapide.
Je pense qu'il est préférable de transférer dans le classeur destination que
les données concernées avec la ligne de champs bien sûr.
Je te donne ci-dessous une procédure à adapter à ta base.
J'ai recréé en VBA quelques fonctions de feuilles très utiles dont EQUIVAL
et NBSI qui revoie une valeur ou 0
Cordialement
Robert
'------------------------------------------------------------------------------------
Sub Transfert()
' 1)trier la base source par les noms des personnes
Range("G1:J500").Sort Key1:=Range("G2"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom,
DataOption1:=xlSortNormal
' 2)copier et coller la ligne des champs dans le nouveau classeur
ActiveSheet.Rows("1:1").Copy
Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A1")
' 3) sélectionner les lignes de la personne concernée (Toto 1) LiD à LiF
' exemple avec noms des personnes dans la colonne A
LiD = EQUIVAL("Toto 1", Range("A:A"), 0)
LiF = LiD + NBSI(Range("A:A"), "Toto 1") - 1
' 4) les copier et les coller dans le classeur destination
ActiveSheet.Rows(LiD & ":" & LiF).Copy
Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A2")
Workbooks("Clas_dest").Activate
End Sub
'---------------------------------------------------------------------------------
Function EQUIVAL(Val_Ch As Variant, Tableau As Range, Mode_Rech As Integer)
As Variant
' fonctionnement identique à la fonction EQUIV de feuille de calcul
EQUIVAL = 0
On Error Resume Next
EQUIVAL = Application.WorksheetFunction.Match(Val_Ch, Tableau,
Mode_Rech)
On Error GoTo 0
End Function
'----------------------------------------------------------------------------------
Function NBSI(Tableau As Range, ByVal Val_Test As String) As Variant
' fonctionnement identique à la fonction NB de feuille de calcul
NBSI = 0
If IsError(Application.WorksheetFunction.CountIf(Tableau, "=" &
Val_Test)) = False Then
NBSI = Application.WorksheetFunction.CountIf(Tableau, "=" &
Val_Test)
End If
End Function
"Greg" <Greg@discussions.microsoft.com> a écrit dans le message de news:
34481ECC-050B-497B-A956-504A3E2A7545@microsoft.com...
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau
fichier (Excel).
Dans ce nouveau fichier, je procède alors à la suppression des lignes de
ma
base non pertinentes avec les paramètres de l'extrait (j'envoie ces
fichiers
à différentes personnes qui n'ont pas besoin de connaître les données
concernant les autres).
Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce
nouveau fichier. Voici la commande que j'utilise:
Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la
ligne, supprimer le contenu de ses cellules. Seule la suppression pure et
simple de la ligne ne produit aucun résultat.
J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option
particulière à cocher dans les options d'Excel pour effectuer ce type
d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter
(c'est ce que j'avais commencé par faire), mais le pb est que les lignes
masquées par le filtre sont aussi copiées lors de l'export et que chacun
de
mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant
le
filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de
votre aide!
Bonsoir Greg, C'est quand même étonnant ce blocage car en général Rows("15:21").Delete Shift:=xlUp fonctionne toujours bien. La solution qui consite à transférer toute la base pis supprimer les lignes inutiles me paraît lourde et peu rapide. Je pense qu'il est préférable de transférer dans le classeur destination que les données concernées avec la ligne de champs bien sûr. Je te donne ci-dessous une procédure à adapter à ta base. J'ai recréé en VBA quelques fonctions de feuilles très utiles dont EQUIVAL et NBSI qui revoie une valeur ou 0 Cordialement Robert '------------------------------------------------------------------------------------ Sub Transfert() ' 1)trier la base source par les noms des personnes Range("G1:J500").Sort Key1:=Range("G2"), Order1:=xlAscending, Header:= _ xlYes, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal ' 2)copier et coller la ligne des champs dans le nouveau classeur ActiveSheet.Rows("1:1").Copy Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A1") ' 3) sélectionner les lignes de la personne concernée (Toto 1) LiD à LiF ' exemple avec noms des personnes dans la colonne A LiD = EQUIVAL("Toto 1", Range("A:A"), 0) LiF = LiD + NBSI(Range("A:A"), "Toto 1") - 1 ' 4) les copier et les coller dans le classeur destination ActiveSheet.Rows(LiD & ":" & LiF).Copy Destination:=Workbooks("Clas_dest").Worksheets("Feuil1").Range("A2") Workbooks("Clas_dest").Activate End Sub '--------------------------------------------------------------------------------- Function EQUIVAL(Val_Ch As Variant, Tableau As Range, Mode_Rech As Integer) As Variant ' fonctionnement identique à la fonction EQUIV de feuille de calcul EQUIVAL = 0 On Error Resume Next EQUIVAL = Application.WorksheetFunction.Match(Val_Ch, Tableau, Mode_Rech) On Error GoTo 0 End Function '---------------------------------------------------------------------------------- Function NBSI(Tableau As Range, ByVal Val_Test As String) As Variant ' fonctionnement identique à la fonction NB de feuille de calcul NBSI = 0 If IsError(Application.WorksheetFunction.CountIf(Tableau, "=" & Val_Test)) = False Then NBSI = Application.WorksheetFunction.CountIf(Tableau, "=" & Val_Test) End If End Function
"Greg" a écrit dans le message de news:
Bonjour,
J'ai écrit une macro qui exporte une base de données Excel vers un nouveau fichier (Excel). Dans ce nouveau fichier, je procède alors à la suppression des lignes de ma base non pertinentes avec les paramètres de l'extrait (j'envoie ces fichiers à différentes personnes qui n'ont pas besoin de connaître les données concernant les autres). Mon pb est que je ne parviens justement pas à supprimer des lignes dans ce nouveau fichier. Voici la commande que j'utilise: Rows (xxx).delete shift:=xlUp
Pourtant, j'ai essayé d'autres commandes qui fonctionnent: colorier la ligne, supprimer le contenu de ses cellules. Seule la suppression pure et simple de la ligne ne produit aucun résultat. J'ai changé d'ordinateur il y a une semaine: y-a-t'il une option particulière à cocher dans les options d'Excel pour effectuer ce type d'opération?
Une solution plus simple consiste à filtrer la base avant de l'exporter (c'est ce que j'avais commencé par faire), mais le pb est que les lignes masquées par le filtre sont aussi copiées lors de l'export et que chacun de mes interlocuteurs peut alors voir l'intégralité de ma base en supprimant le filtre...
Quelque soit la solution que vous m'aiderez à debugger, merci d'avance de votre aide!