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

10 réponses

1 2
Avatar
Youky
Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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




Avatar
Ellimac
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




Avatar
j-pascal
> Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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







Re,

Sauf erreur de ma part, ça marche plutôt bien, sauf que chaque fois que
je valide la msgbox, le numéro de colonne se "dé"crémente !
Je souhaite conserver le numéro de la colonne la plus à droite.
@+ ?
JP
Avatar
j-pascal
> 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
Ellimac
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
Youky
Alors comme ceci...

For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then MsgBox "colonne " & k: col = k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

Youky


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

Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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







Re,

Sauf erreur de ma part, ça marche plutôt bien, sauf que chaque fois que je
valide la msgbox, le numéro de colonne se "dé"crémente !
Je souhaite conserver le numéro de la colonne la plus à droite.
@+ ?
JP




Avatar
j-pascal
Merci.

Pour le numéro de colonne, c'est parfait !
Pour le nombre de dates, il semble qu'il y ait une erreur ...

@+ ?
JP
Alors comme ceci...

For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then MsgBox "colonne " & k: col = k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

Youky


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

Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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







Re,

Sauf erreur de ma part, ça marche plutôt bien, sauf que chaque fois que je
valide la msgbox, le numéro de colonne se "dé"crémente !
Je souhaite conserver le numéro de la colonne la plus à droite.
@+ ?
JP






Avatar
Youky
To 3 au lieu de 4 pour lire aussi col D
Ici j'ai mis le msgbox aprés la boucle
Youky

For k = [IV10].End(1).Column To 3 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then col = k
i = i + 1
End If
Next
MsgBox "colonne " & col
MsgBox "nb de dates " & i

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

Merci.

Pour le numéro de colonne, c'est parfait !
Pour le nombre de dates, il semble qu'il y ait une erreur ...

@+ ?
JP
Alors comme ceci...

For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then MsgBox "colonne " & k: col = k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

Youky


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

Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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







Re,

Sauf erreur de ma part, ça marche plutôt bien, sauf que chaque fois que
je valide la msgbox, le numéro de colonne se "dé"crémente !
Je souhaite conserver le numéro de la colonne la plus à droite.
@+ ?
JP










Avatar
j-pascal
Re,
Merci Youki,
Ca n'a pas marché du premier coup ! Le résultat était inférieur au
nombre réel de date. J'ai dû supprimer des dates pour que ça
corresponde au résultat du 2nd msgbox. Si j'en rajoute, alors le compte
est bon. On dirait que la mémoire de la variable est conservée ; mais
bon, peut-être ai-je fait une mauvaise manip ...

@+ ?

JP

To 3 au lieu de 4 pour lire aussi col D
Ici j'ai mis le msgbox aprés la boucle
Youky

For k = [IV10].End(1).Column To 3 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then col = k
i = i + 1
End If
Next
MsgBox "colonne " & col
MsgBox "nb de dates " & i

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

Merci.

Pour le numéro de colonne, c'est parfait !
Pour le nombre de dates, il semble qu'il y ait une erreur ...

@+ ?
JP
Alors comme ceci...

For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
If col = "" Then MsgBox "colonne " & k: col = k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

Youky


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

Re,
Salut,
For k = [IV10].End(1).Column To 4 Step -1
If IsDate(Cells(10, k)) Then
MsgBox "colonne " & k
i = i + 1
End If
Next
MsgBox "nb de dates " & i

J'espère cette fois ne pas être à coté de la plaque
Youky

"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







Re,

Sauf erreur de ma part, ça marche plutôt bien, sauf que chaque fois que
je valide la msgbox, le numéro de colonne se "dé"crémente !
Je souhaite conserver le numéro de la colonne la plus à droite.
@+ ?
JP












Avatar
j-pascal
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