mon souci j'ai un gène anti-boucle!

Sebasto

XLDnaute Nouveau
Bonjour,

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).


A+

Sebastien
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Sebastien

Si tu mettrais le fichier ce serait plus simple, non? On est pas devins pour voir la structure de ton tableau. :cool:

EDIT: si ton tableau se présente comme ceci

tablo.gif


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
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Sebasto, Lone-wolf,

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
A+
 

job75

XLDnaute Barbatruc
Re,

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.

A+
 
Dernière édition:

Sebasto

XLDnaute Nouveau
Bonjour à tous les 3,

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:

ActiveSheet.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

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).

Seb
 

Discussions similaires

Statistiques des forums

Discussions
312 163
Messages
2 085 859
Membres
103 005
dernier inscrit
gilles.hery