Extraire données sur la base d'un critère : avec impossibilité d'appliquer filtres Excel, ni requête
2 réponses
nathoche
Bonjour,
Apr=E8s avoir planch=E9 plusieurs heures, je n'arrive pas =E0 r=E9soudre mon
probl=E8me que voici :
Je re=E7ois un rapport Excel g=E9n=E9r=E9 automatiquement par un syst=E8me =
sur
le net et dont je n'ai pas le contr=F4le.
Ce rapport liste sur cinq colonnes des informations ainsi que des
calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des
lignes fusionn=E9es (sous-totaux), des lignes blanches entre chaque sous-
section : tout pour emp=EAcher les filtres, tris, requ=EAtes. bref : un
cauchemar !
Ce que je dois faire, c'est pr=E9parer une macro qui permettrait, sans
manipulation =E0 mon directeur, de copier toutes les lignes qui auraient
le crit=E8re "001" ou "002" dans la colonne B, et coller toutes ces
lignes dans une nouvelle feuille, afin de pouvoir ensuite lui
appliquer un calcul dans les colonnes D et E (ce que je pourrais faire
=E0 partir d'un UserForm, je suis =E0 l'aise avec cette partie l=E0.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de
solution ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FFO
Salut Nathoche En prenant ton rapport dans l'onglet "Source" et la recopie des données dans l'onglet "Destination Tu peux essayer cette macro : Sheets("Destination").Select Range("A1").Select A = Sheets("Source").Range("B65535").End(xlUp).Address For Each c In Worksheets("Source").Range("B1", A) If c = "001" Or c = "002" Then c.EntireRow.Copy ActiveSheet.Paste ActiveCell.Offset(1, 0).Select End If Next
Celà devrait fonctionner avec un doute quand même quant aux cellules fusionnées bienque aprés test aucun dysfonctionnement
Dis moi
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous- section : tout pour empêcher les filtres, tris, requêtes. bref : un cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans manipulation à mon directeur, de copier toutes les lignes qui auraient le critère "001" ou "002" dans la colonne B, et coller toutes ces lignes dans une nouvelle feuille, afin de pouvoir ensuite lui appliquer un calcul dans les colonnes D et E (ce que je pourrais faire à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de solution ?
Par avance, merci !!
Salut Nathoche
En prenant ton rapport dans l'onglet "Source" et la recopie des données dans
l'onglet "Destination
Tu peux essayer cette macro :
Sheets("Destination").Select
Range("A1").Select
A = Sheets("Source").Range("B65535").End(xlUp).Address
For Each c In Worksheets("Source").Range("B1", A)
If c = "001" Or c = "002" Then
c.EntireRow.Copy
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
End If
Next
Celà devrait fonctionner avec un doute quand même quant aux cellules
fusionnées
bienque aprés test aucun dysfonctionnement
Dis moi
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon
problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur
le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des
calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des
lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous-
section : tout pour empêcher les filtres, tris, requêtes. bref : un
cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans
manipulation à mon directeur, de copier toutes les lignes qui auraient
le critère "001" ou "002" dans la colonne B, et coller toutes ces
lignes dans une nouvelle feuille, afin de pouvoir ensuite lui
appliquer un calcul dans les colonnes D et E (ce que je pourrais faire
à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de
solution ?
Salut Nathoche En prenant ton rapport dans l'onglet "Source" et la recopie des données dans l'onglet "Destination Tu peux essayer cette macro : Sheets("Destination").Select Range("A1").Select A = Sheets("Source").Range("B65535").End(xlUp).Address For Each c In Worksheets("Source").Range("B1", A) If c = "001" Or c = "002" Then c.EntireRow.Copy ActiveSheet.Paste ActiveCell.Offset(1, 0).Select End If Next
Celà devrait fonctionner avec un doute quand même quant aux cellules fusionnées bienque aprés test aucun dysfonctionnement
Dis moi
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous- section : tout pour empêcher les filtres, tris, requêtes. bref : un cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans manipulation à mon directeur, de copier toutes les lignes qui auraient le critère "001" ou "002" dans la colonne B, et coller toutes ces lignes dans une nouvelle feuille, afin de pouvoir ensuite lui appliquer un calcul dans les colonnes D et E (ce que je pourrais faire à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de solution ?
Par avance, merci !!
Youky
Salut remplacer zaza par le nom qui convient au mieux et est le nom de l'onglet créé Si cette page existe on n'en créé pas de nouvelle
Application.ScreenUpdating = False onglet = ActiveSheet.Name On Error Resume Next Sheets("zaza").Select If Err > 0 Then Sheets.Add ActiveSheet.Name = "zaza" End If Sheets("zaza").Cells.Clear With Sheets(onglet) For k = 1 To .[B65536].End(3).Row If .Cells(k, 2) = "001" Or .Cells(k, 2) = "002" Then lig = lig + 1 .Rows(k).Copy Sheets("zaza").Rows(lig) End If Next End With Sheets("zaza").Select Application.ScreenUpdating = True
"nathoche" a écrit dans le message de news:
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous- section : tout pour empêcher les filtres, tris, requêtes. bref : un cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans manipulation à mon directeur, de copier toutes les lignes qui auraient le critère "001" ou "002" dans la colonne B, et coller toutes ces lignes dans une nouvelle feuille, afin de pouvoir ensuite lui appliquer un calcul dans les colonnes D et E (ce que je pourrais faire à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de solution ?
Par avance, merci !!
Salut
remplacer zaza par le nom qui convient au mieux et est le nom de l'onglet
créé
Si cette page existe on n'en créé pas de nouvelle
Application.ScreenUpdating = False
onglet = ActiveSheet.Name
On Error Resume Next
Sheets("zaza").Select
If Err > 0 Then
Sheets.Add
ActiveSheet.Name = "zaza"
End If
Sheets("zaza").Cells.Clear
With Sheets(onglet)
For k = 1 To .[B65536].End(3).Row
If .Cells(k, 2) = "001" Or .Cells(k, 2) = "002" Then
lig = lig + 1
.Rows(k).Copy Sheets("zaza").Rows(lig)
End If
Next
End With
Sheets("zaza").Select
Application.ScreenUpdating = True
"nathoche" <npmontion@videotron.ca> a écrit dans le message de news:
1177181692.746152.305840@l77g2000hsb.googlegroups.com...
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon
problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur
le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des
calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des
lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous-
section : tout pour empêcher les filtres, tris, requêtes. bref : un
cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans
manipulation à mon directeur, de copier toutes les lignes qui auraient
le critère "001" ou "002" dans la colonne B, et coller toutes ces
lignes dans une nouvelle feuille, afin de pouvoir ensuite lui
appliquer un calcul dans les colonnes D et E (ce que je pourrais faire
à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de
solution ?
Salut remplacer zaza par le nom qui convient au mieux et est le nom de l'onglet créé Si cette page existe on n'en créé pas de nouvelle
Application.ScreenUpdating = False onglet = ActiveSheet.Name On Error Resume Next Sheets("zaza").Select If Err > 0 Then Sheets.Add ActiveSheet.Name = "zaza" End If Sheets("zaza").Cells.Clear With Sheets(onglet) For k = 1 To .[B65536].End(3).Row If .Cells(k, 2) = "001" Or .Cells(k, 2) = "002" Then lig = lig + 1 .Rows(k).Copy Sheets("zaza").Rows(lig) End If Next End With Sheets("zaza").Select Application.ScreenUpdating = True
"nathoche" a écrit dans le message de news:
Bonjour,
Après avoir planché plusieurs heures, je n'arrive pas à résoudre mon problème que voici :
Je reçois un rapport Excel généré automatiquement par un système sur le net et dont je n'ai pas le contrôle.
Ce rapport liste sur cinq colonnes des informations ainsi que des calculs. Il y a des milliers de lignes.
Il n'a pas de titre de colonnes, ni de plages de nom. Il y a des lignes fusionnées (sous-totaux), des lignes blanches entre chaque sous- section : tout pour empêcher les filtres, tris, requêtes. bref : un cauchemar !
Ce que je dois faire, c'est préparer une macro qui permettrait, sans manipulation à mon directeur, de copier toutes les lignes qui auraient le critère "001" ou "002" dans la colonne B, et coller toutes ces lignes dans une nouvelle feuille, afin de pouvoir ensuite lui appliquer un calcul dans les colonnes D et E (ce que je pourrais faire à partir d'un UserForm, je suis à l'aise avec cette partie là.)
Est-ce que quelqu'un pourrait m'aider ou me donner une piste de solution ?