Excel script pour ouvrir un fichier et filtrer les données en fonction de la val
Fermé
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
-
28 sept. 2021 à 11:00
Druddy Messages postés 34 Date d'inscription samedi 29 mai 2021 Statut Membre Dernière intervention 29 mars 2023 - 30 sept. 2021 à 13:49
Druddy Messages postés 34 Date d'inscription samedi 29 mai 2021 Statut Membre Dernière intervention 29 mars 2023 - 30 sept. 2021 à 13:49
A voir également:
- Excel script pour ouvrir un fichier et filtrer les données en fonction de la val
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Fonction si et - Guide
- Comment réduire la taille d'un fichier - Guide
5 réponses
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Ambassadeur
1 551
28 sept. 2021 à 11:46
28 sept. 2021 à 11:46
bonjour,
je pense qu'avec du travail, tu pourras réaliser cela.
je pense qu'avec du travail, tu pourras réaliser cela.
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
Modifié le 28 sept. 2021 à 18:50
Modifié le 28 sept. 2021 à 18:50
Bonjour,
Est-ce que la solution de ventilation de données est une bonne approche ?
Merci
Est-ce que la solution de ventilation de données est une bonne approche ?
Merci
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
28 sept. 2021 à 20:56
28 sept. 2021 à 20:56
peux-tu montrer le code ventilant?
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
29 sept. 2021 à 19:28
29 sept. 2021 à 19:28
Bonjour,
Je me suis inspiré du tuto : https://www.youtube.com/watch?v=uWjTidviHis
Je me suis inspiré du tuto : https://www.youtube.com/watch?v=uWjTidviHis
Dim j As Integer Dim LastRow As Integer Dim DerniereLigne As Integer Sub ventilation() Application.ScreenUpdating = False 'Boucle permettent de lire toutes les feuilles du classeur (5 dans notre exemple)' For j = 1 To 5 Sheets(j).Select LastRow = Range("A10000").End(xlUp).Row For i = LastRow To 6 Step -1 'Parcourir les lignes en remontant vers le haut sauf titre' Sheets(j).Select Rows(i).Select Selection.Delete shift:=xlUp Next i Sheets("BASELINE").Select DerniereLigne = Range("A10000").End(xlUp).Row For k = 6 To DerniereLigne Sheets("BASELINE").Select If Sheets(j).Name = Cells(k, 8).Value Then Rows(k).Select Selection.Copy Sheets(j).Select LastRow = Range("A10000").End(xlUp).Row + 1 Cells(LastRow, 1).Select ActiveSheet.Paste End If Next k Next j Sheets("BASELINE").Select Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
29 sept. 2021 à 19:33
29 sept. 2021 à 19:33
Bonjour,
Pourtant en faisant à l'identique, j'ai une erreur : 400.
Je ne sais pas comment envoyer mon fichier pour voir l'erreur.
Merci
Pourtant en faisant à l'identique, j'ai une erreur : 400.
Je ne sais pas comment envoyer mon fichier pour voir l'erreur.
Merci
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
>
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
29 sept. 2021 à 22:35
29 sept. 2021 à 22:35
avant d'envoyer le fichier, précise le texte du message d'erreur, ainsi que la ligne concernée.
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
>
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
Modifié le 30 sept. 2021 à 09:12
Modifié le 30 sept. 2021 à 09:12
Bonjour,
Je n'ai rien que l'information 400 et pas de ligne indiquée :
"Erreur d'execution '1004': Erreur définie par l'application ou par l'objet.
Je n'ai rien que l'information 400 et pas de ligne indiquée :
"Erreur d'execution '1004': Erreur définie par l'application ou par l'objet.
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
>
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
30 sept. 2021 à 10:36
30 sept. 2021 à 10:36
ne peux-tu pas choisir "degug" quand tu reçois le message d'erreur? ne vois-tu pas ensuite une ligne de code surlignée?
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
30 sept. 2021 à 10:49
30 sept. 2021 à 10:49
Hélas non quand je sélectionne Debug il n'y a pas de ligne en jaune qui apparait.
Ceci dit j'ai trouvé un autre code que j'ai adapté.
Il fait presque bien le boulot car il me copie toutes les données dans les onglets mais toutes pas celles qui ne devraient être dans l'onglet approprié (par Site code : image jointe de la source).
S'il n'y a que les données dans l'onglet associé au site code, c'est gagné !!!
Mais là je pèche.
Ceci dit j'ai trouvé un autre code que j'ai adapté.
Il fait presque bien le boulot car il me copie toutes les données dans les onglets mais toutes pas celles qui ne devraient être dans l'onglet approprié (par Site code : image jointe de la source).
S'il n'y a que les données dans l'onglet associé au site code, c'est gagné !!!
Mais là je pèche.
Option Explicit '************************************************************************************************** ' NAME : Ventiler (PROCESS) ' DESCRIPTION : A partir d'une liste de Site, le processus va répartir les ' différentes lignes dans les feuilles associées (La jonction se fait par le ' nom de la feuille) '************************************************************************************************** Public Sub Ventiler() Dim oSheetData As Excel.Worksheet 'Feuille avec le nom du site Dim oRangeData As Excel.Range 'Plage des cellules à copier Dim oListSite As Object 'Liste des sites à exporter Dim oCellSite As Object 'Cellule du Site actif Dim oTestSite As Object 'Liste des Sites déjà testé Dim iLastRow As Integer 'dernière ligne de la colonne 8 (feuille Source) Dim iFirstRow As Integer 'Ligne des entêtes (feuille Source) Dim iLastColumn As Integer 'Dernière colonne non vide sur la ligne des entêtes Dim iFirstColumn As Integer 'Première colonne à exporter Dim iNumberRow As Integer 'Nombre de ligne à exporter Application.ScreenUpdating = False 'Paramétrage iFirstRow = 5 ' Saisir la ligne de tes en-têtes iFirstColumn = 1 'Saisir la première colonne de copie Set oTestSite = VBA.CreateObject("Scripting.Dictionary") With Worksheets("Source") If .FilterMode Then 'Si il y a un filtre d'activer .ShowAllData End If 'Calcul de la plage iLastRow = .Cells(65000, 8).End(xlUp).Row iLastColumn = .Cells(iFirstRow, 255).End(xlToLeft).Column 'Fixation de la plage Set oListSite = .Range(.Cells(iFirstRow + 1, 8), .Cells(iLastRow, 8)) For Each oCellSite In oListSite If Not oTestSite.Exists(oCellSite.Value) Then oTestSite(oCellSite.Value) = Empty 'On initialise la feuille de destination On Error Resume Next Set oSheetData = Worksheets(CStr(oCellSite)) 'Si elle n'existe pas on la créé If oSheetData Is Nothing Then Set oSheetData = Sheets.Add(After:=Sheets(Sheets.Count)) oSheetData.Name = oCellSite End If 'Application du filtre .Range(iFirstRow & ":" & iFirstRow).AutoFilter 8, oCellSite 'Fixation de la plage à exporter Set oRangeData = .Range(.Cells(iFirstRow, iFirstColumn), _ .Cells(iLastRow, iLastColumn)).SpecialCells(xlCellTypeVisible) oRangeData.Copy 'Copie des données 'On récupère le nombre de ligne à exporter iNumberRow = oRangeData.Rows.Count 'Insertion des lignes dans la nouvelle feuille oSheetData.Rows("6:" & 6 + iNumberRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Set oSheetData = Nothing Set oRangeData = Nothing End If Next oCellSite .ShowAllData Set oListSite = Nothing Set oTestSite = Nothing End With End Sub
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
Modifié le 30 sept. 2021 à 10:53
Modifié le 30 sept. 2021 à 10:53
Oups j'ai oublié : le RAZ des données précédentes avec entête sinon il ajoute.
yg_be
Messages postés
23341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2024
1 551
30 sept. 2021 à 11:11
30 sept. 2021 à 11:11
c'est bizarre, tu mentionnes "copier", alors qu'au départ tu mentionnais uniquement "afficher".
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Druddy
Messages postés
34
Date d'inscription
samedi 29 mai 2021
Statut
Membre
Dernière intervention
29 mars 2023
30 sept. 2021 à 13:49
30 sept. 2021 à 13:49
En effet, une erreur de ma part, je veux copier les informations par site dans l'onglet qui lui est assigné.