Je bute (comme souvent) sur un souci de date.
Dans une cellule nomm=C3=A9e "Date_R=C3=A9f", je rentre une date : 19/10/20=
17
Je souhaite trouver cette date dans une plage donn=C3=A9e, je tente donc ce=
ci :
With ActiveSheet.Range("B1:BJ1")
Set C =3D .Find(Range("Date_R=C3=A9f"), LookIn:=3DxlValues)
If Not C Is Nothing Then
PremCol =3D C.Column
Mais VBA m'envoie promener, parce que C reste =C3=A0 Nothing !
Si quelqu'un pouvait m'=C3=A9viter de m'arracher les cheveux l=C3=A0-dessus=
, je serais le plus heureux des bidouilleurs Excel !!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, 2 manières de procéder : Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même date et que tu veuilles boucler sur ces cellules. Pour les anciennes versions d'Excel, cela peut-être problématique, car le format des cellules contenant ces dates doit avoir le format de date par défaut, c'est-à-dire le format date court muni d'un astérisque dans la fenêtre des formats de cellules. Les récentes versions ne posent pas ce problème! Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de doublon de date, car la procédure ne retourne que la première date trouvée répondant au critère dans la colonne. A ) '---------------------------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date D = Date With Feuil1 Set Rg = .Range("A1:E10") End With With Rg Set C = .Find(what:=D, LookIn:=xlValues, _ LookAt:=xlWhole) If Not C Is Nothing Then Adr = C.Address Do MsgBox C.Address 'ou autre chose Set C = .FindNext(C) Loop Until C.Address = Adr End If End With End Sub B ) '---------------------------------------------------------------- Sub test1() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date, X As Variant D = Date With Feuil1 Set Rg = .Range("A1:E10") End With For Each C In Rg.Columns X = Application.Match(CLng(D), C, 0) If IsError(X) Then Err.Number = 0 Else MsgBox Cells(X, C.Column).Address End If Next End Sub '---------------------------------------------------------------- MichD
Bonjour,
2 manières de procéder :
Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même
date et que tu veuilles boucler sur ces cellules.
Pour les anciennes versions d'Excel, cela peut-être problématique, car le
format des cellules contenant ces dates doit avoir le format de date par
défaut, c'est-à-dire le format date court muni d'un astérisque dans la
fenêtre des formats de cellules. Les récentes versions ne posent pas ce
problème!
Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de
doublon de date, car la procédure ne retourne que la première date trouvée
répondant au critère dans la colonne.
A )
'----------------------------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim Trouve As Range, Adr As String
Dim D As Date
D = Date
With Feuil1
Set Rg = .Range("A1:E10")
End With
With Rg
Set C = .Find(what:=D, LookIn:=xlValues, _
LookAt:=xlWhole)
If Not C Is Nothing Then
Adr = C.Address
Do
MsgBox C.Address 'ou autre chose
Set C = .FindNext(C)
Loop Until C.Address = Adr
End If
End With
End Sub
B )
'----------------------------------------------------------------
Sub test1()
Dim Rg As Range, C As Range
Dim Trouve As Range, Adr As String
Dim D As Date, X As Variant
D = Date
With Feuil1
Set Rg = .Range("A1:E10")
End With
For Each C In Rg.Columns
X = Application.Match(CLng(D), C, 0)
If IsError(X) Then
Err.Number = 0
Else
MsgBox Cells(X, C.Column).Address
End If
Next
End Sub
'----------------------------------------------------------------
Bonjour, 2 manières de procéder : Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même date et que tu veuilles boucler sur ces cellules. Pour les anciennes versions d'Excel, cela peut-être problématique, car le format des cellules contenant ces dates doit avoir le format de date par défaut, c'est-à-dire le format date court muni d'un astérisque dans la fenêtre des formats de cellules. Les récentes versions ne posent pas ce problème! Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de doublon de date, car la procédure ne retourne que la première date trouvée répondant au critère dans la colonne. A ) '---------------------------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date D = Date With Feuil1 Set Rg = .Range("A1:E10") End With With Rg Set C = .Find(what:=D, LookIn:=xlValues, _ LookAt:=xlWhole) If Not C Is Nothing Then Adr = C.Address Do MsgBox C.Address 'ou autre chose Set C = .FindNext(C) Loop Until C.Address = Adr End If End With End Sub B ) '---------------------------------------------------------------- Sub test1() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date, X As Variant D = Date With Feuil1 Set Rg = .Range("A1:E10") End With For Each C In Rg.Columns X = Application.Match(CLng(D), C, 0) If IsError(X) Then Err.Number = 0 Else MsgBox Cells(X, C.Column).Address End If Next End Sub '---------------------------------------------------------------- MichD
Jacquouille
Bonjour Denis depuis le début, au siècle précédent, on bute sur les dates, qui est un gros problème d'Excel. Je me suis très souvent débrouillé en remettant non pas la date, mais le n° du jour (ici = 43027) format de date US ou Européen .... Bonne soirée Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : osahf1$12iu$ Bonjour, 2 manières de procéder : Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même date et que tu veuilles boucler sur ces cellules. Pour les anciennes versions d'Excel, cela peut-être problématique, car le format des cellules contenant ces dates doit avoir le format de date par défaut, c'est-à-dire le format date court muni d'un astérisque dans la fenêtre des formats de cellules. Les récentes versions ne posent pas ce problème! Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de doublon de date, car la procédure ne retourne que la première date trouvée répondant au critère dans la colonne. A ) '---------------------------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date D = Date With Feuil1 Set Rg = .Range("A1:E10") End With With Rg Set C = .Find(what:=D, LookIn:=xlValues, _ LookAt:=xlWhole) If Not C Is Nothing Then Adr = C.Address Do MsgBox C.Address 'ou autre chose Set C = .FindNext(C) Loop Until C.Address = Adr End If End With End Sub B ) '---------------------------------------------------------------- Sub test1() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date, X As Variant D = Date With Feuil1 Set Rg = .Range("A1:E10") End With For Each C In Rg.Columns X = Application.Match(CLng(D), C, 0) If IsError(X) Then Err.Number = 0 Else MsgBox Cells(X, C.Column).Address End If Next End Sub '---------------------------------------------------------------- MichD
Bonjour Denis
depuis le début, au siècle précédent, on bute sur les dates, qui est un gros
problème d'Excel.
Je me suis très souvent débrouillé en remettant non pas la date, mais le n°
du jour (ici = 43027)
format de date US ou Européen ....
Bonne soirée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
osahf1$12iu$1@gioia.aioe.org...
Bonjour,
2 manières de procéder :
Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même
date et que tu veuilles boucler sur ces cellules.
Pour les anciennes versions d'Excel, cela peut-être problématique, car le
format des cellules contenant ces dates doit avoir le format de date par
défaut, c'est-à-dire le format date court muni d'un astérisque dans la
fenêtre des formats de cellules. Les récentes versions ne posent pas ce
problème!
Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de
doublon de date, car la procédure ne retourne que la première date trouvée
répondant au critère dans la colonne.
A )
'----------------------------------------------------------------
Sub test()
Dim Rg As Range, C As Range
Dim Trouve As Range, Adr As String
Dim D As Date
D = Date
With Feuil1
Set Rg = .Range("A1:E10")
End With
With Rg
Set C = .Find(what:=D, LookIn:=xlValues, _
LookAt:=xlWhole)
If Not C Is Nothing Then
Adr = C.Address
Do
MsgBox C.Address 'ou autre chose
Set C = .FindNext(C)
Loop Until C.Address = Adr
End If
End With
End Sub
B )
'----------------------------------------------------------------
Sub test1()
Dim Rg As Range, C As Range
Dim Trouve As Range, Adr As String
Dim D As Date, X As Variant
D = Date
With Feuil1
Set Rg = .Range("A1:E10")
End With
For Each C In Rg.Columns
X = Application.Match(CLng(D), C, 0)
If IsError(X) Then
Err.Number = 0
Else
MsgBox Cells(X, C.Column).Address
End If
Next
End Sub
'----------------------------------------------------------------
Bonjour Denis depuis le début, au siècle précédent, on bute sur les dates, qui est un gros problème d'Excel. Je me suis très souvent débrouillé en remettant non pas la date, mais le n° du jour (ici = 43027) format de date US ou Européen .... Bonne soirée Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : osahf1$12iu$ Bonjour, 2 manières de procéder : Pour la méthode A, dans le cas où tu as plusieurs cellules qui ont la même date et que tu veuilles boucler sur ces cellules. Pour les anciennes versions d'Excel, cela peut-être problématique, car le format des cellules contenant ces dates doit avoir le format de date par défaut, c'est-à-dire le format date court muni d'un astérisque dans la fenêtre des formats de cellules. Les récentes versions ne posent pas ce problème! Pour la méthode B, chacune des colonnes de la plage ne peut pas avoir de doublon de date, car la procédure ne retourne que la première date trouvée répondant au critère dans la colonne. A ) '---------------------------------------------------------------- Sub test() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date D = Date With Feuil1 Set Rg = .Range("A1:E10") End With With Rg Set C = .Find(what:=D, LookIn:=xlValues, _ LookAt:=xlWhole) If Not C Is Nothing Then Adr = C.Address Do MsgBox C.Address 'ou autre chose Set C = .FindNext(C) Loop Until C.Address = Adr End If End With End Sub B ) '---------------------------------------------------------------- Sub test1() Dim Rg As Range, C As Range Dim Trouve As Range, Adr As String Dim D As Date, X As Variant D = Date With Feuil1 Set Rg = .Range("A1:E10") End With For Each C In Rg.Columns X = Application.Match(CLng(D), C, 0) If IsError(X) Then Err.Number = 0 Else MsgBox Cells(X, C.Column).Address End If Next End Sub '---------------------------------------------------------------- MichD
MichD
Bonjour Jacquouille, Les dernières versions d'Office, la gestion des dates en VBA se sont grandement améliorées. MichD
Bonjour Jacquouille,
Les dernières versions d'Office, la gestion des dates en VBA se sont
grandement améliorées.
Bonjour Jacquouille, Les dernières versions d'Office, la gestion des dates en VBA se sont grandement améliorées. MichD
ThierryP
Le jeudi 19 octobre 2017 17:47:49 UTC+2, MichD a écrit : Bonjour Denis, toujours aussi actif à ce que je vois !!! Et toujours aussi efficace, ta méthode B marche impeccable. Un grand merci pour le coup de main ThierryP
Le jeudi 19 octobre 2017 17:47:49 UTC+2, MichD a écrit :
Bonjour Denis, toujours aussi actif à ce que je vois !!!
Et toujours aussi efficace, ta méthode B marche impeccable.
Le jeudi 19 octobre 2017 17:47:49 UTC+2, MichD a écrit : Bonjour Denis, toujours aussi actif à ce que je vois !!! Et toujours aussi efficace, ta méthode B marche impeccable. Un grand merci pour le coup de main ThierryP
ThierryP
Bonjour Jacques, C'est ce que je voulais faire, mais comme je dois boucler sur une plage, je pataugeais dans les formats.... Les dates dans Excel sont un gros problème pour moi également !!! ThierryP Le jeudi 19 octobre 2017 18:15:28 UTC+2, Jacquouille a écrit :
Bonjour Denis depuis le début, au siècle précédent, on bute sur les dates, qui est un gros problème d'Excel. Je me suis très souvent débrouillé en remettant non pas la date, mais le n° du jour (ici = 43027) format de date US ou Européen .... Bonne soirée
Bonjour Jacques,
C'est ce que je voulais faire, mais comme je dois boucler sur une plage, je pataugeais dans les formats....
Les dates dans Excel sont un gros problème pour moi également !!!
ThierryP
Le jeudi 19 octobre 2017 18:15:28 UTC+2, Jacquouille a écrit :
Bonjour Denis
depuis le début, au siècle précédent, on bute sur les dates, qui est un gros
problème d'Excel.
Je me suis très souvent débrouillé en remettant non pas la date, mais le n°
du jour (ici = 43027)
format de date US ou Européen ....
Bonne soirée
Bonjour Jacques, C'est ce que je voulais faire, mais comme je dois boucler sur une plage, je pataugeais dans les formats.... Les dates dans Excel sont un gros problème pour moi également !!! ThierryP Le jeudi 19 octobre 2017 18:15:28 UTC+2, Jacquouille a écrit :
Bonjour Denis depuis le début, au siècle précédent, on bute sur les dates, qui est un gros problème d'Excel. Je me suis très souvent débrouillé en remettant non pas la date, mais le n° du jour (ici = 43027) format de date US ou Européen .... Bonne soirée