Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vba identifier n° colonne d'une suite de dates

12 réponses
Avatar
j-pascal
Bonjour,

Sur la ligne 10 (ie) à partir de la colonne D, j'ai plusieurs dates.
Comment puis-je récupérer, dans une variable, le numéro qui correspond
à la dernière colonne comportant une date (sachant qu'il y a des
données diverses sur la même ligne après la dernière date) ?

PS : comment compter (en vba toujours) le nombre de dates contenues
dans une ligne (10 ie) ?

Merci pour vos lumières,

JP

2 réponses

1 2
Avatar
Ellimac
Bonjour,

Si tu ne veux pas des sélections...

Sub ColonneDate()
adr = Selection.Address
Range("iv10").End(xlToLeft).Select
While ActiveCell.Column <> 1
If IsDate(ActiveCell) Then
c = ActiveCell.Column
GoTo fin
End If
ActiveCell.Offset(, -1).Select
Wend
fin: MsgBox "La dernière colonne contenant une date est la colonne n° " &
c
Range(adr).Select
End Sub

Sub CompterDates()
adr = Selection.Address
Rows("10:10").SpecialCells(xlCellTypeConstants, 1).Select
For Each c In Selection
If IsDate(c) Then a = a + 1
Next
MsgBox "Il y a " & a & " cellules contenant une date"
Range(adr).Select
End Sub

Camille
"j-pascal" a écrit dans le message de news:

Re,

On est d'accord que dans l'ex. 1 la dernière date de la ligne est
sélectionnée ? Ce que je souhaite, ce n'est pas la sélection mais le
numéro de la colonne correspondant à la position de la dernière date ; çàd
"10" si la dite date est dans la colonne "J".

On est d'accord que dans l'ex. 2 toutes les dates sont sélectionnées ?
Ce que je souhaite, c'est le nombre de dates (soit "10" s'il y a 10 dates)
et non leur sélection.

J'ai simplement copié ton code dans mon module de feuille ; aurais-je
oublié qqch ?

@+ ?

JP

Bonjour,

Dans l'exemple 1 la variable c récupère le n° de la colonne contenant la
dernière date.
Dans l'exemple 2 la variable a récupère le nombre de cellules contenant
une date.

Camille

"j-pascal" a écrit dans le message de news:

Bonjour,

Sub ColonneDate()
Range("iv10").End(xlToLeft).Select
While ActiveCell.Column <> 1
If IsDate(ActiveCell) Then
c = ActiveCell.Column
End
End If
ActiveCell.Offset(, -1).Select
Wend
End Sub

Sub CompterDates()
Rows("10:10").SpecialCells(xlCellTypeConstants, 1).Select
For Each c In Selection
If IsDate(c) Then a = a + 1
Next
End Sub


Camille

"j-pascal" a écrit dans le message de news:

Bonjour,

Sur la ligne 10 (ie) à partir de la colonne D, j'ai plusieurs dates.
Comment puis-je récupérer, dans une variable, le numéro qui correspond
à la dernière colonne comportant une date (sachant qu'il y a des
données diverses sur la même ligne après la dernière date) ?

PS : comment compter (en vba toujours) le nombre de dates contenues
dans une ligne (10 ie) ?

Merci pour vos lumières,

JP







Bonjour Camille,

Ton code 1 sélectionne la dernière date et ne renvoit pas le numéro de
colonne dans laquelle se trouve la dite date !
Ton code 2 sélectionne toute les dates de la ligne 10.

Je te remercie pour ces deux codes (que je conserve précieusement car
ils sont très intéressants) mais ils ne correspondent pas tout à fait à
ma demande.

JP










Avatar
j-pascal
Bonsoir Camille,

Merci bcp, c'est parfait !

JP

Bonjour,

Si tu ne veux pas des sélections...

Sub ColonneDate()
adr = Selection.Address
Range("iv10").End(xlToLeft).Select
While ActiveCell.Column <> 1
If IsDate(ActiveCell) Then
c = ActiveCell.Column
GoTo fin
End If
ActiveCell.Offset(, -1).Select
Wend
fin: MsgBox "La dernière colonne contenant une date est la colonne n° " &
c
Range(adr).Select
End Sub

Sub CompterDates()
adr = Selection.Address
Rows("10:10").SpecialCells(xlCellTypeConstants, 1).Select
For Each c In Selection
If IsDate(c) Then a = a + 1
Next
MsgBox "Il y a " & a & " cellules contenant une date"
Range(adr).Select
End Sub

Camille
"j-pascal" a écrit dans le message de news:

Re,

On est d'accord que dans l'ex. 1 la dernière date de la ligne est
sélectionnée ? Ce que je souhaite, ce n'est pas la sélection mais le numéro
de la colonne correspondant à la position de la dernière date ; çàd "10" si
la dite date est dans la colonne "J".

On est d'accord que dans l'ex. 2 toutes les dates sont sélectionnées ?
Ce que je souhaite, c'est le nombre de dates (soit "10" s'il y a 10 dates)
et non leur sélection.

J'ai simplement copié ton code dans mon module de feuille ; aurais-je
oublié qqch ?

@+ ?

JP

Bonjour,

Dans l'exemple 1 la variable c récupère le n° de la colonne contenant la
dernière date.
Dans l'exemple 2 la variable a récupère le nombre de cellules contenant
une date.

Camille

"j-pascal" a écrit dans le message de news:

Bonjour,

Sub ColonneDate()
Range("iv10").End(xlToLeft).Select
While ActiveCell.Column <> 1
If IsDate(ActiveCell) Then
c = ActiveCell.Column
End
End If
ActiveCell.Offset(, -1).Select
Wend
End Sub

Sub CompterDates()
Rows("10:10").SpecialCells(xlCellTypeConstants, 1).Select
For Each c In Selection
If IsDate(c) Then a = a + 1
Next
End Sub


Camille

"j-pascal" a écrit dans le message de news:

Bonjour,

Sur la ligne 10 (ie) à partir de la colonne D, j'ai plusieurs dates.
Comment puis-je récupérer, dans une variable, le numéro qui correspond
à la dernière colonne comportant une date (sachant qu'il y a des
données diverses sur la même ligne après la dernière date) ?

PS : comment compter (en vba toujours) le nombre de dates contenues
dans une ligne (10 ie) ?

Merci pour vos lumières,

JP







Bonjour Camille,

Ton code 1 sélectionne la dernière date et ne renvoit pas le numéro de
colonne dans laquelle se trouve la dite date !
Ton code 2 sélectionne toute les dates de la ligne 10.

Je te remercie pour ces deux codes (que je conserve précieusement car ils
sont très intéressants) mais ils ne correspondent pas tout à fait à ma
demande.

JP












1 2