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
- Fonction si et - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier docx ? - Guide
5 réponses
yg_be
Messages postés
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
Ambassadeur
1 568
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
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
1 568
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
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
1 568
>
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
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
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
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
1 568
>
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.
![](https://img-19.ccm2.net/1ozHtiKFYosvzbMzjcs9fNTz8Os=/440x/6207901126f942d49fff187794932d4a/ccm-ugc/Ventiler.png)
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.
![](https://img-19.ccm2.net/1ozHtiKFYosvzbMzjcs9fNTz8Os=/440x/6207901126f942d49fff187794932d4a/ccm-ugc/Ventiler.png)
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
23472
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
1 568
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é.