j'ai une macro qui me sélectionne automatiquement mes cases remplies via:
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Mais je voudrais auparavant vérifier si j'ai des données sur ma ligne 1 de
ma feuille pour ce faire j'ai 2 solutions:
1- Code pour tester si ma première ligne est vide ?
2- suite à ma commande de sélection, m'indiquer combien de ligne (ma heuteur
de sélection) je viens de sélectionner.
Est ce que qqu'un aurait une idée de code pour la solution 1 et/ou 2?
Bonsour® anonymousA avec ferveur ;o))) vous nous disiez :
pas si simple si les cellules de la selection ne sont pas contigues, tu ne crois pas ?
;o))) pas si simple en effet .... voici un code adapté d'une astuce de J.Walk http://groups.google.fr/group/microsoft.public.excel.programming/msg/d2b284503bab5488?dmode=source&hl=fr
Sub AboutRangeSelection() Set LaSelectionInitiale = Selection.SpecialCells(xlCellTypeConstants, 23)
' ----- selectionne les lignes concernées (geedee) LaSelectionInitiale.EntireRow.Select Dim NumCols As Integer Dim NumRows As Long Dim NumBlocks As Integer Dim NumCells As Long Dim NumAreas As Integer Dim SelType As String Dim FirstAreaType As String Dim CurrentType As String Dim WhatSelected As String Dim UnionRange As Range Dim Area As Range Dim Msg As String
' Determine number of areas in selection NumAreas = Selection.Areas.Count If NumAreas = 1 Then SelType = "Single Selection" Else SelType = "Multiple Selection" End If
' Build the union of all areas to avoid double-counting Set UnionRange = Selection.Areas(1) For Each Area In Selection.Areas Set UnionRange = Union(UnionRange, Area) Next Area
' Loop through each area in the Union range For Each Area In UnionRange.Areas NumRows = NumRows + Area.Rows.Count Next Area
Private Function AreaType(RangeArea As Range) As String ' Returns the type of a range in an area Select Case True Case RangeArea.Cells.Count = 1 AreaType = "Cell" Case RangeArea.Count = Cells.Count AreaType = "Worksheet" Case RangeArea.Rows.Count = Cells.Rows.Count AreaType = "Column" Case RangeArea.Columns.Count = Cells.Columns.Count AreaType = "Row" Case Else AreaType = "Block" End Select End Function
-- ;o))) @+
Les news à la source !!! news://news.microsoft.com/microsoft.public.fr.excel et répondez OUI
n'oubliez pas les FAQ :http://www.excelabo.net http://dj.joss.free.fr/faq.htm http://www.faqoe.com http://faqword.free.fr
Bonsour® anonymousA avec ferveur ;o))) vous nous disiez :
pas si simple si les cellules de la selection ne sont pas contigues, tu ne
crois pas ?
;o))) pas si simple en effet ....
voici un code adapté d'une astuce de J.Walk
http://groups.google.fr/group/microsoft.public.excel.programming/msg/d2b284503bab5488?dmode=source&hl=fr
Sub AboutRangeSelection()
Set LaSelectionInitiale = Selection.SpecialCells(xlCellTypeConstants,
23)
' ----- selectionne les lignes concernées (geedee)
LaSelectionInitiale.EntireRow.Select
Dim NumCols As Integer
Dim NumRows As Long
Dim NumBlocks As Integer
Dim NumCells As Long
Dim NumAreas As Integer
Dim SelType As String
Dim FirstAreaType As String
Dim CurrentType As String
Dim WhatSelected As String
Dim UnionRange As Range
Dim Area As Range
Dim Msg As String
' Determine number of areas in selection
NumAreas = Selection.Areas.Count
If NumAreas = 1 Then
SelType = "Single Selection"
Else
SelType = "Multiple Selection"
End If
' Build the union of all areas to avoid double-counting
Set UnionRange = Selection.Areas(1)
For Each Area In Selection.Areas
Set UnionRange = Union(UnionRange, Area)
Next Area
' Loop through each area in the Union range
For Each Area In UnionRange.Areas
NumRows = NumRows + Area.Rows.Count
Next Area
Private Function AreaType(RangeArea As Range) As String
' Returns the type of a range in an area
Select Case True
Case RangeArea.Cells.Count = 1
AreaType = "Cell"
Case RangeArea.Count = Cells.Count
AreaType = "Worksheet"
Case RangeArea.Rows.Count = Cells.Rows.Count
AreaType = "Column"
Case RangeArea.Columns.Count = Cells.Columns.Count
AreaType = "Row"
Case Else
AreaType = "Block"
End Select
End Function
--
;o)))
@+
Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI
n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
Bonsour® anonymousA avec ferveur ;o))) vous nous disiez :
pas si simple si les cellules de la selection ne sont pas contigues, tu ne crois pas ?
;o))) pas si simple en effet .... voici un code adapté d'une astuce de J.Walk http://groups.google.fr/group/microsoft.public.excel.programming/msg/d2b284503bab5488?dmode=source&hl=fr
Sub AboutRangeSelection() Set LaSelectionInitiale = Selection.SpecialCells(xlCellTypeConstants, 23)
' ----- selectionne les lignes concernées (geedee) LaSelectionInitiale.EntireRow.Select Dim NumCols As Integer Dim NumRows As Long Dim NumBlocks As Integer Dim NumCells As Long Dim NumAreas As Integer Dim SelType As String Dim FirstAreaType As String Dim CurrentType As String Dim WhatSelected As String Dim UnionRange As Range Dim Area As Range Dim Msg As String
' Determine number of areas in selection NumAreas = Selection.Areas.Count If NumAreas = 1 Then SelType = "Single Selection" Else SelType = "Multiple Selection" End If
' Build the union of all areas to avoid double-counting Set UnionRange = Selection.Areas(1) For Each Area In Selection.Areas Set UnionRange = Union(UnionRange, Area) Next Area
' Loop through each area in the Union range For Each Area In UnionRange.Areas NumRows = NumRows + Area.Rows.Count Next Area
Private Function AreaType(RangeArea As Range) As String ' Returns the type of a range in an area Select Case True Case RangeArea.Cells.Count = 1 AreaType = "Cell" Case RangeArea.Count = Cells.Count AreaType = "Worksheet" Case RangeArea.Rows.Count = Cells.Rows.Count AreaType = "Column" Case RangeArea.Columns.Count = Cells.Columns.Count AreaType = "Row" Case Else AreaType = "Block" End Select End Function
-- ;o))) @+
Les news à la source !!! news://news.microsoft.com/microsoft.public.fr.excel et répondez OUI
n'oubliez pas les FAQ :http://www.excelabo.net http://dj.joss.free.fr/faq.htm http://www.faqoe.com http://faqword.free.fr
anonymousA
Revenant sur ce code, je m'apercois qu'il faut remplacer Else ReDim Preserve tabl(1 To compteur + 1) tabl(compteur) = c.Row End If
par
Else compteur = compteur + 1 ReDim Preserve tabl(1 To compteur) tabl(compteur) = c.Row End If
J'avais voulu faire une simplification trop rapide.
A+
Revenant sur ce code, je m'apercois qu'il faut remplacer
Else
ReDim Preserve tabl(1 To compteur + 1)
tabl(compteur) = c.Row
End If
par
Else
compteur = compteur + 1
ReDim Preserve tabl(1 To compteur)
tabl(compteur) = c.Row
End If
J'avais voulu faire une simplification trop rapide.