Rapatriement de données puis découpage automatique fichier excel

RomainGe

XLDnaute Junior
Bonjour,


Je me demandais si le rapatriement d'un fichier excel ainsi que son découpage pouvait se faire automatiquement grâce a une macro ou une appli VB.

Je dois rapatrier un fichier d'un site internet en format xml, xls ou txt (selon mon choix) puis dans ce fichier j'ai des lignes a supprimer. Toujours les mêmes lignes, c'est a dire celle qui ne contiennent pas de chiffre.

Pensez vous que mon projet soit réalisable ?

Merci pour votre retour

Cordialement,
 

julberto

XLDnaute Occasionnel
Re : Rapatriement de données puis découpage automatique fichier excel

Bonjour RomainGe,

Je me demandais si le rapatriement d'un fichier excel ainsi que son découpage pouvait se faire automatiquement grâce a une macro ou une appli VB.
OUI pour les 2, mais VB ou Vba ? ?

celle qui ne contiennent pas de chiffre.
....Pas de chiffre ou pas de nombre ou pas de valeur numérique.....? ? ?
Les fonctions "IsNumeric" et "IsDate" te seront certainement utiles.

cordialement
 

RomainGe

XLDnaute Junior
Re : Rapatriement de données puis découpage automatique fichier excel

peut importe VB ou VBA sa m'est égale juste si on peut m'éclairer...

en faite plus clairement je souhaite supprimer des lignes inutiles, donc il faudrait que je puisse définir les lignes a supprimer. Mais la mes compétences sont limitées.


Si tu as des exemples je suis preneur...
 

RomainGe

XLDnaute Junior
Re : Rapatriement de données puis découpage automatique fichier excel

Voici un fichier type que je souhaite découper.

Donc entre chaque ligne, par exemple de la ligne 24 à la ligne 26 je souhaite découper puis ainsi de suite.

En fait il faudrait un découpage automatique de toutes lignes se trouvant hors du tableau.

Réalisable ?!

Puis dans un deuxième temps lancer le rapatriement du fichier en automatique jusqu'au découpage !
 

Pièces jointes

  • a découper.xls
    111 KB · Affichages: 74
  • a découper.xls
    111 KB · Affichages: 78
  • a découper.xls
    111 KB · Affichages: 76

aalex_38

XLDnaute Nouveau
Re : Rapatriement de données puis découpage automatique fichier excel

Bonjour,

Un exemple à adapter selon ton besoin

VB:
Sub essai()
Dim DerLig As Long
Set F1 = ThisWorkbook.Worksheets("Feuille1")
With F1
DerLig = .Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = DerLig To 1 Step -1
    If .Cells(i, 1) = Empty Or .Cells(i, 1) = "Code" Then
        .Cells(i, 1).EntireRow.Delete
    End If
Next
End With
End Sub
 

julberto

XLDnaute Occasionnel
Re : Rapatriement de données puis découpage automatique fichier excel

Re,

Ci joint ton fichier "nettoyé". La macro y est incluse.
Je la reproduis ici.
VB:
Sub Découpage()
 
Application.ScreenUpdating = False
Set plg = Worksheets("Feuille1").UsedRange
plg.UnMerge: plg.WrapText = False
Set c = plg.Columns("G")
nblign = plg.Rows.Count
For i = nblign To 1 Step -1
  If VarType(c.Rows(i)) = vbEmpty And i <> 7 Then c.Rows(i).EntireRow.Delete
Next i
Application.ScreenUpdating = True

End Sub

cordialement
 

Pièces jointes

  • a découper.xls
    97 KB · Affichages: 94
  • a découper.xls
    97 KB · Affichages: 88
  • a découper.xls
    97 KB · Affichages: 91

RomainGe

XLDnaute Junior
Re : Rapatriement de données puis découpage automatique fichier excel

Merci c'est presque parfait, un grand merci !!

Je te redonne un autre fichier, j'ai surligné en jaune ce que je veut voir supprimer en automatique, parce qu'avec ton code il reste une ligne qui reste et sa me gène...

Mais en tout cas c'est parfait tu a très bien compris ce que je voulais et je t'en remercie énormément.
 

Pièces jointes

  • a découper V2.xls
    113 KB · Affichages: 59
Dernière édition:

RomainGe

XLDnaute Junior
Re : Rapatriement de données puis découpage automatique fichier excel

Et dans un deuxième temps est'il possible d'automatiser la suppression des colonnes vides ??

Puis a la fin de tout sa automatiser l'ajout de la formule somme tout en bas de la feuille juste en dessous de ma dernière ligne ??
 
Dernière édition:

julberto

XLDnaute Occasionnel
Re : Rapatriement de données puis découpage automatique fichier excel

Re,

L’impatience peut souvent être interprétée comme un vilain défaut....:cool::cool:
Quand il faut manager son temps entre le boulot, la vie de famille et l'exercice de ses propres hobbies, on se doit d'avoir des priorités. Devine lesquelles ?:)

J'ai donc réalisé ce que tu as demandé :
- automatiser la suppression des colonnes vides
- automatiser l'ajout de la formule somme tout en bas de la feuille
- supprimer en automatique, une ligne qui reste et sa me gène
J'ai fait en sorte que
- la macro s'actionne sur la feuille active (celle qui apparait au premier plan à l'écran),
- puis j'ai ajouté une mise en forme des colonnes,
- puis j'ai ajouté une mise en forme de la ligne des sommes
Voila ce que cela donne :
VB:
Sub Découpage()
Application.ScreenUpdating = False
Set plg = ActiveSheet.UsedRange
plg.UnMerge: plg.WrapText = False
Set c = plg.Columns("G")
For i = plg.Rows.Count To 1 Step -1
  If VarType(c.Rows(i)) = vbEmpty Or c.Rows(i) = "Cur." Then c.Rows(i).EntireRow.Delete
Next i

Set plg = ActiveSheet.UsedRange: nblign = plg.Rows.Count
With plg
  .Offset(nblign, 0).Resize(1, .Columns.Count - 1).Formula = "=sum(A1:A197)"
  .Offset(nblign, 0).Resize(1, .Columns.Count - 1).Font.Bold = True
  .EntireColumn.AutoFit
  .NumberFormat = "[$-1010409]# ### ### ### ###"
End With
Application.ScreenUpdating = True
End Sub

cordialement malgré tout.
 

RomainGe

XLDnaute Junior
Re : Rapatriement de données puis découpage automatique fichier excel

merci beaucoup prend du bon temps avant tout !!!

cependant peut tu m'expliquer le fonctionnement de la somme automatique ?

en fait je traite beaucoup de fichier et la taille varie, du coup je voulais savoir si la somme s'appliquerai tout le temps en dessous de la dernière ligne ou pas ?
de plus j'ai tester le découpage sa marche sur d'autre fichier en revanche, sur un fichier avec peu de lignes sa plante mais c'est pas grave du tout.

et enfin est ce que tu peut automatiser la suppression des colonnes vides sauf la C qui n'est pas vide d'habitude (confidentialité oblige...) ??

Merci beaucoup par avance.


Cordialement,
 

julberto

XLDnaute Occasionnel
Re : Rapatriement de données puis découpage automatique fichier excel

Re bonjour,

1 - La macro devait planter car je l'avais faite un peu trop vite et surtout sans contrôler suffisamment. Ce qui devait induire le plantage c'était le calcul de la somme qui était écrite "en dur".
Le problème devrait être réglé.
2 - Cette ligne de sommations se trouvera toujours (normalement) après la dernière ligne de ton tableau.
3 - J'ai ajouté une "cerise sur le gâteau" : un menu déroulant qui se place dans la barre des menus d'Excel. Ce menu lance le découpage sur la feuille active. Il est propre au classeur et visible depuis toutes les feuilles de ce classeur évidemment.
4 - J'ai ôté les colonnes inutiles.
Ci-après les différents éléments :
Dans ThisWorkbook
[highlight=Vba]Private Sub Workbook_BeforeClose(Cancel As Boolean)
SupprimeMenus 'Suppression du menu personnalisé.
End Sub

Private Sub Workbook_Open()
AjouteMenus 'Ajoute un menu déroulant dans la barre des menus.
End Sub[/code]Dans un module standard
[highlight=Vba]Sub Découpage()
Application.ScreenUpdating = False
Set plg = ActiveSheet.UsedRange
plg.UnMerge: plg.WrapText = False
Set c = plg.Columns("G")
For i = plg.Rows.Count To 1 Step -1
If VarType(c.Rows(i)) = vbEmpty Or c.Rows(i) = "Cur." Then c.Rows(i).EntireRow.Delete
Next i

Set plg = ActiveSheet.UsedRange: nb = plg.Rows.Count
With plg
.Offset(nb, 0).Resize(1, .Columns.Count - 2).Formula = "=sum(A1:A" & nb & ")"
.Offset(nb, 0).Resize(1, .Columns.Count - 2).Font.Bold = True
.EntireColumn.AutoFit
.Resize(nb + 1, .Columns.Count - 2).NumberFormat = "[$-1010409]# ### ### ### ###"
End With
Set plg = Application.Union(Columns("B"), Columns("D:F"), Columns("H"), Columns("K"), Columns("Q:S"))
plg.Delete
Application.ScreenUpdating = True
End Sub

Sub AjouteMenus() 'Insère un menu déroulant à la barre des menus
n = Application.CommandBars("Worksheet Menu Bar").Controls.Count
With MenuBars(xlWorksheet)
.Menus.Add Caption:="&Romain", Before:=n
With .Menus("&Romain").MenuItems
.Add Caption:="Découpage", OnAction:="Découpage"
.Add Caption:="Bonjour", OnAction:="Bonjour"
End With: End With
End Sub

Sub Bonjour()
MsgBox "Bonjour"
End Sub

Sub SupprimeMenus() 'Supprime le menu et les commandes avant de quitter
For Each MonMenu In Application.CommandBars("Worksheet Menu Bar").Controls
If MonMenu.Caption = "&Romain" Then MonMenu.Delete
Next MonMenu
End Sub[/code]

Au plus tôt à lundi. Cordialement
 

Pièces jointes

  • Découpage.xls
    41.5 KB · Affichages: 79
  • Découpage.xls
    41.5 KB · Affichages: 87
  • Découpage.xls
    41.5 KB · Affichages: 82
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali