Rechercher : dans
Par :

Macro Excel - sélection d'une plage de donnée

Dernière réponse le 5 mar 2009 à 09:34:24 fabnad, le 4 mar 2009 à 14:15:57 
 Signaler ce message aux modérateurs

Bonjour,

je suis débutant en macro excel.
Je me sers de l'enregistreur, mais cela me limite pas mal.
Notemment pour la sélection d'une plage de données

Je m'explique:

Je demande à la macro d'ouvrir le doc1 (fichier excel) dans lequel figurent mes données à copier.
Ces données commencent en cellule A1 pour finir en cellule Gquelquechose....

En résumé je ne sais pas comment dire à la macro de sélectionner juste les lignes/colonnes dans lesquelles se trouvent une donnée....

Un jeux d'enfant pour vous .....

Merci de vos retour.

A+

Configuration: Windows 2007
Internet Explorer 6.0

Meilleures réponses pour « Macro Excel sélection d'une plage de donnée » dans :
Tableur - La sélection des cellules VoirSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

lermite222, le 4 mar 2009 à 14:27:51

Bonjour,
Normalement, si tu avais sélectionner ta plage avec l'éditeur de macro tu a eu tne plage en référence R1C1.
Pour une plage que tu veux inscrire directement
Plage = Range("A1:F25") .. Par exemple.
A+ L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

3

fabnad, le 4 mar 2009 à 15:36:25

Salut Lermite222,

merci de ce retour rapide
Mais je comprends pas quand tu dis "Normalement, si tu avais sélectionner ta plage avec l'éditeur de macro tu a eu tne plage en référence R1C1. "

moi voici ce que j'ai quand je fabrique ma macro et que je sélectionne la plage de données que je souhaite.
Mais cette plage de données sera différente + ou - de lignes selons les mois. (c'est données sont des incidents)
Donc je souhaite sélectionner uniquement les cellules avec données. Si je vois large et que je sélectionne 20000 lignes je vais avoir des cellules. Ces cellules vides généreront une valeur "vide" dans mes tableaux dynamiques croisés.

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 04/03/2009 par EDF-GDF
'

'
Workbooks.Open Filename:= _
"E:\DONNEES\mabillon-fab\MES DOCUMENTS\Classeurtestextraction.xls"
Range("A1:G172").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub

Répondre à fabnad

2

michel_m, le 4 mar 2009 à 14:42:37

Bonjour,
la seule méthode sûre est d'employer ces 2 instructions
lig = Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
col = Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Row

lig étant la dernière ligne utilisée (vide ou pas avant)
col, même punition pour les colonnes

la définition de ctte cellule peut être écrit de cette façon:
cellslig,col)


la propriété usedrange souvent citée n'est valable que pour un tableau plein
il y a souvent des problèmes avec cette instruction: Cells.SpecialCells(xlCellTypeLastCell).Row Cordialement, Michel

Répondre à michel_m

4

fabnad, le 4 mar 2009 à 15:38:32

Boonjour Michel,

Merci de ton retour rapide.
Cependant je suis débutant et je comprends pas forcément toutes tes infos.
Pourrais tu me dire ce que tes consignes donneraient dans ma macro.

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 04/03/2009 par
'

'
Workbooks.Open Filename:= _
"E:\DONNEES\mabillon-fab\MES DOCUMENTS\Classeurtestextraction.xls"
Range("A1:G172").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub

Répondre à fabnad

5

michel_m, le 4 mar 2009 à 16:39:39

Re,bonjour l'ami lhermite

petite remarque au départ: dans le TCD, il suffit de décocher "vide" pour qu'ils disparaissent du TCD... (double clic sur un des boutons du TCD)

pour revenir à ta macro en considérant un nombre de colonnes fixes, la colonne A étant utilisée...

remplace
Workbooks.Open Filename:= _
"E:\DONNEES\mabillon-fab\MES DOCUMENTS\Classeurtestextraction.xls"
Range("A1:G172").Select
Selection.Copy

par (xl<2007)

Dim derlig As Long
Workbooks.Open Filename:= _
"E:\DONNEES\mabillon-fab\MES DOCUMENTS\Classeurtestextraction.xls"
derlig = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(derlig, 7)).Copy

pour te tuyauter sur le VBA
www.info-3000.com (c'est un Michel mais pas moi!) Cordialement, Michel

Répondre à michel_m

6

 fabnad, le 5 mar 2009 à 09:34:24

Merci Michel,

ça tourne comme sur des roulettes.

A+

Répondre à fabnad