Selection d'une plage de données

  • Initiateur de la discussion La_FaRcE
  • Date de début
L

La_FaRcE

Guest
Bonjour @ ts,

Voici mes pbs:

1/- Comment selectionner dans une feuille Excel la première cellule pleine jusqu'a la derniere cellule pleine (cellule contenant des infos) dans une colonne.

2/- Comment supprimer les lignes vides ( si la cellule A est vide, alors supprimer la ligne entière ).

3/- Est-il possible par une macro vba de reconnaitre une cellule ( ex : si A2 = "date de l'action", alors copier la colonne et la coller ds un autre classeur).
Le pb c que c pas toujours la colonne A qui contient l'info. Il faudrait que je puisse l'identifier pour la rapatrier dans la bonne feuille de mon classeur.

J'espère être assez clair dans mes explications.
Je remercie tous ceux qui pouront m'aider.

Attention c Excel 97.

Bonne soirée @ ts et @ ++
La_FaRcE.
 
F

Franck

Guest
Je te propose une macro pour chacun de tes pbs dans l'ordre ou tu les a soumis

Sub Macro1()


'
Range("A3").Select 'ici A3 est la première cellule de la colonne
Range(Selection, Selection.End(xlDown)).Select
End Sub


Sub Macro2()
'


For i = 1 To 300 'j'ai choisi 300 comme taille maximale de la colonne
ActiveCell.Offset(1, 0).Range("A1").Select
If ActiveCell.Value = "" Then
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range("A1").Select
End If
Next
End Sub

Sub macro3() 'les info sont dans feuil1 et sont envoyées dans feuil2

Range("A1").Select 'coin haut gauche des données
For j = 1 To 4 'j'ai choisi de ratisser sur 4 colonnes
ligne10:
For i = 1 To 20 'j'ai choisi 20 comme taille maximale de la colonne
ActiveCell.Offset(1, 0).Range("A1").Select
If ActiveCell.Value = "date de l'action" Then
ActiveCell.Columns("A:A").EntireColumn.Select
Selection.Copy
Sheets("Feuil2").Select
ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
ActiveSheet.Paste
'ActiveCell.Offset(1, 1).Range("A1").Select
Sheets("Feuil1").Select
ActiveCell.Offset(0, 1).Range("A1").Select
GoTo ligne10
End If
Next
i = i - 1
ActiveCell.Offset(-i, 1).Range("A1").Select
Next
End Sub

Salut
 
R

RENATO

Guest
Bonjour La farce, Salut Franck,

En complément de la brillante démonstration de Franck ci-dessus, sur le point 1 je rajouterai que tu peux selectionner la plage de cellules souhaitée en selectionnant au clavier la premiere cellule puis en maintenant shift et ctrl enfoncés puis "flèche directionnelle basse"

A bientôt

Rénato
 
O

omicron

Guest
Bonsoir La Farce,

Voici les réponses aux questions que tu poses,

1. Coder l'instruction ======================================
UsedRange.Select 'Si la sélection porte sur la page
ou
WorkSheets("X").UsedRange.Select 'Si la sélection porte sur la feuille "X"

2.Coder les 3 instructions ===================================
For i = UsedRange.Rows.Count To 1 Step -1
If Rows(i).Cells(1) = "" Then Rows(i).Delete
Next i

3.Coder les 4 instructions ===================================
For Each Col In Workbooks("Classeur1").Worksheets("Feuil1").UsedRange.Columns
Set Cel = Col.Find("xxx", , , xlWhole)
If Not Cel Is Nothing Then _
Cel.EntireColumn.Copy Destination:=Workbooks("Classeur2").Worksheets("Feuil1").Columns(Cel.Column)
Next Col

Dans ce dernier on recherche la chaîne de caractères xxx dans les colonnes de la feuille Feuil1 du classeur Classeur1, si l'on trouve, on copie toute la colonne dans la feuille Feuil1 du classeur Classeur2

La recherche de la chaîne xxx porte sur un mot entier de la cellule, de nombreuses variantes sont possibles :
- mot partiel
- mot entier
- cellule entière

Je suis en Office 2003, je ne garantis pas que cela fonctionne en Excel 97

Voilà, au besoin tu peux me recontacter.

@+

Omicron
 

Statistiques des forums

Discussions
312 393
Messages
2 087 963
Membres
103 687
dernier inscrit
olivier72