Macro Excel Sélection automatique d'1 plage

Fermé
François59 - Modifié par François59 le 13/08/2010 à 09:58
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 13 août 2010 à 12:22
Bonjour,

Je ne sais pas programmer, mais compiler des bouts de codes pour arriver au résultat. En général, à force de tâtonnement, j'y arrive ... pas cette fois ! Je tombe sur un os que je n'arrive pas à résoudre, toute aide est la bienvenue :-)

J'ai un (très gros) fichier excel qui contient des entrées. On a 8 onglets, certains contenant plus de 30000 lignes ! Ce fichier est national.
Je veux obtenir le même fichier (même données, même organisation) mais au niveau départemental.

Pour l'instant, ce que j'arrive à faire est :
- manuellement, je crée un fichier excel qui s'appelle par exemple 59.xls
- le nom de fichier est récupéré et utilisé dans une formule qui le compare le début du code postal : si c'est bon, on marque 1, sinon on laisse la cellule vide.
ça donne +- ceci : A1= si(codePostalOK;1;"")

C'est le "" de la formule SI qui fait bugguer la macro ensuite.

La macro :
- copie-colle toute la feuille, en copiage spécial "valeur" [pour effacer la formule]
- trie par la colonne A, de telle sorte que les 1 soient en début de liste (les entrées du 59)
- j'ai trouvé une macro qui repère dans une colonne la première cellule vide, et qui, de là sélectionne tout ce qui reste vers le bas et les n colonnes que je dois effacer vers la droite.
- pour pouvoir effacer la plage sélectionner
- et enregistrer le fichier.

Malheureusement, la macro sélectionne au pied de mon tableau. C'est comme si le "" de la formule SI était considérée par la Macro comme étant quelque chose.

Voici le bout de macro qui fait "trier la colonne et sélectionner la première cellule vide de la colonne A, qui ne fonctionne pas !


---
Sub seizevq()

' Macro1 Macro
' Macro enregistrée le 12/08/2010
'
' Touche de raccourci du clavier: Ctrl+q

Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

ActiveSheet.Range("a2").End(xlDown).Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Intersect(Selection.EntireRow, Range("A:AQ")).Select

'
End Sub

---

Merci de votre aide !


A voir également:

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
13 août 2010 à 12:22
Bonjour,

Une idée :

Sub seizevq()

' Macro1 Macro
' Macro enregistrée le 12/08/2010
'
' Touche de raccourci du clavier: Ctrl+q

Cells.Select
Selection.Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Dim lig As Long

lig = 2
While Range("A" & lig).Value = 1
     lig = lig + 1
Wend

Dim plage As Range
Set plage = Range("A2:AQ" & lig)

plage.Select

'etc...

'
End Sub 


;o)
0