Je voudrais pouvoir faire une macro ultra-simple, mais je n'y arrive pas.
Les boucles ne rentrent pas dans mon cerveau!
Voilà, d'abord je copie valeur le contenu de 3 colonnes d'un fichier depuis la ligne 13 jusqu'à la fin, et je veux conserver les largeurs de chacune des 3 colonnes (çà c'est OK en macro automatique)
Ensuite, le hic, il faut dans ce nouveau fichier que la macro supprime toutes les lignes 1 à 1 pour lesquelles la colonne 1 est vide et cela jusqu'à la fin (pour créer un tableau sans ligne vide à l'intérieur)... évidemment c'est une boucle, mais je n'y arrive pas.
Merci de votre aide (je ne met pas de fichier Excel en pièce jointe comme exemple c'est trop banal).
Si tu mettrais le fichier ce serait plus simple, non? On est pas devins pour voir la structure de ton tableau.
EDIT: si ton tableau se présente comme ceci
Alors, un exemple
VB:
Sub test()
Dim derL&, i&
derL = Cells(Rows.Count, 1).End(xlUp).Row
For i = derL To 2 Step -1
If Cells(i, 1) = vbNullString Then Cells(i, 1).EntireRow.Delete
Next i
End Sub
Allergique aux boucles ? Ça tombe bien, il n'en faut pas :
Code:
Sub CopierColonnes()
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
On Error Resume Next
Workbooks("MyBeautifulFile").Close 'si le fichier est ouvert on le ferme
With ActiveSheet
Workbooks.Add xlWBATWorksheet 'document vierge
.[B:B,E:E,G:G].Copy [A1] 'adapter les 3 colonnes à copier
End With
ActiveSheet.Rows("1:12").Delete
ActiveSheet.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'cellules vides
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\MyBeautifulFile" 'enregistrement
'ActiveWorkbook.Close 'facultatif
End Sub
La macro précédente copie tout dans les 3 colonnes.
Pour copier uniquement les formats et les valeurs :
Code:
Sub CopierColonnes()
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier a déjà été créé
On Error Resume Next
Workbooks("MyBeautifulFile").Close 'si le fichier est ouvert on le ferme
[B:B,E:E,G:G].Copy 'adapter les 3 colonnes à copier
Workbooks.Add xlWBATWorksheet 'document vierge
[A1].PasteSpecial xlPasteFormats 'collage spécial-Formats
[A1].PasteSpecial xlPasteValues 'collage spécial-Valeurs
[A1].Select
ActiveSheet.Rows("1:12").Delete
ActiveSheet.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'cellules vides
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\MyBeautifulFile" 'enregistrement
'ActiveWorkbook.Close 'facultatif
End Sub
Edit : je précise que ces macros sont à placer dans un module standard.
Tous mes remerciements pour votre aide et votre ré-activité!
Tout est parfait.
Je dois avoir un souci génétique car le code avec boucle ne me parle pas et je n'arrive pas à comprendre le code (sauf bien sûr le 'for' et 'next'... mais il faut avoir avant le 'i').
Cela dit je n'imaginais pas une solution simple comme:
Et je la garde précieusement et je vais l'adapter aux lignes à effacer!
Merci encore.
Je termine par 2 souhaits pour MS et pour le forum (je n'avais pas posé de question depuis un bail).
Si il y a un domaine où MS pourrait améliorer Excel ce serait pour les macros automatiques (y compris les boucles) plutôt que de faire une version sur le cloud qui casse toute confidentialité.
Et pour le forum, je me connecte d'hab de mon bureau, mais je ne peux plus car il y a une pop-up qui oblige, sous peine de ne pouvoir rien faire, à cliquer sur acceptation des cookies et çà notre DIT l'empêche complètement (dons je suis allé en biblio publique).