Bonsoir Domi,
comme je ne vois pas trop l'objectif de la première partie de la question,
voici un axe de recherche pour la seconde partie :
Range("B10:B1000").SpecialCells(xlCellTypeBlanks)
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir Domi,
comme je ne vois pas trop l'objectif de la première partie de la question,
voici un axe de recherche pour la seconde partie :
Range("B10:B1000").SpecialCells(xlCellTypeBlanks)
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"Domi" <scrat83@free.fr> a écrit dans le message de
news:ux%23vjBcbEHA.2660@TK2MSFTNGP12.phx.gbl...
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir Domi,
comme je ne vois pas trop l'objectif de la première partie de la question,
voici un axe de recherche pour la seconde partie :
Range("B10:B1000").SpecialCells(xlCellTypeBlanks)
--
Bien cordialement,
Joël GARBE
www.joelgarbe.fr
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" <scrat83@free.fr> a écrit dans le message de
news:ux%23vjBcbEHA.2660@TK2MSFTNGP12.phx.gbl...
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement
bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" a écrit dans le message de
news:NKVKc.78245$
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
delaplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas
150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement
bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" <rien@absent.net> a écrit dans le message de
news:NKVKc.78245$Rf.4258@edtnps84...
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" <scrat83@free.fr> a écrit dans le message de
news:ux%23vjBcbEHA.2660@TK2MSFTNGP12.phx.gbl...
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas
150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement
bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" a écrit dans le message de
news:NKVKc.78245$
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
delaplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas
150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" a écrit dans le message de
news:NKVKc.78245$
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
delaplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" <rien@absent.net> a écrit dans le message de
news:NKVKc.78245$Rf.4258@edtnps84...
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" <scrat83@free.fr> a écrit dans le message de
news:ux%23vjBcbEHA.2660@TK2MSFTNGP12.phx.gbl...
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de
la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
J'ai testé les deux propositions, qui semblent fonctionner parfaitement bien
(après une petite adaptation pour celle de serge).
Impec ;o)
Merci à tous deux.
Domi
"garnote" a écrit dans le message de
news:NKVKc.78245$
Salut Domi,
Un essai sur une plage plus modeste :
Sub Remplir_De_Dates_Par_Paquet_De_10()
Set ici = Range("A1:H20")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
NL = ici.Rows.Count
NC = ici.Columns.Count
n = 0
Do Until n = 10
ligne = Int(NL * Rnd + 1)
colonne = Int(NC * Rnd + 1)
If ici(ligne, colonne) = "" Then
ici(ligne, colonne) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Cela fait-il sens ? :-)
Serge
"Domi" a écrit dans le message de
news:ux%Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
delaplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40FC25C2.E3A7AD69@Suppgaboly.com...
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num nest
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num nest
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.
Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40FC25C2.E3A7AD69@Suppgaboly.com...
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num nest
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range, Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée "Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Serge,
Une précision :
IsEmpty(c) n'est pas équivalent à c="", mais à c.Formula = ""
Si tu entres dans une cellule, la formule ="", la cellule paraîtra vide,
mais isEmpty renverra False.
IsEmpty, pour une cellule correspond à la fonction Excel ESTVIDE().Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num n'est
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range,
Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au
hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée
"Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est
toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules
vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler
la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste
pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Serge,
Une précision :
IsEmpty(c) n'est pas équivalent à c="", mais à c.Formula = ""
Si tu entres dans une cellule, la formule ="", la cellule paraîtra vide,
mais isEmpty renverra False.
IsEmpty, pour une cellule correspond à la fonction Excel ESTVIDE().
Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num n'est
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.
Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40FC25C2.E3A7AD69@Suppgaboly.com...
Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range,
Delta
As Long, i As Integer
Set Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au
hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée
"Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellules
vides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est
toujours
en colonne B (définition de Début).
Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules
vides
de la
plage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler
la
chose
sur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste
pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Serge,
Une précision :
IsEmpty(c) n'est pas équivalent à c="", mais à c.Formula = ""
Si tu entres dans une cellule, la formule ="", la cellule paraîtra vide,
mais isEmpty renverra False.
IsEmpty, pour une cellule correspond à la fonction Excel ESTVIDE().Re,
Si c est une cellule, oui.
Cependant IsEmpty est d'usage plus général : IsEmpty(Var) renvoie
True, si Var est une variable non encore initialisée, OU si Var est
égal à une chaine vide dans un contexte de chaîne, OU si Var est égal
à 0 dans un contexte numérique.
Attention toutefois, IsEmpty() ne renvoie une info pertinente que
pour les variables de type Variant, comme tu peux le voir avec
cette procédure, où aucune des 2 variables Var et Num n'est
initialisée, mais où IsEmpty(Var) renvoie True, alors que
IsEmpty(Num) renvoie False :
Sub Toto()
Dim Var As Variant, Num As Integer
MsgBox IsEmpty(Var) & vbNewLine & IsEmpty(Num)
End Sub
.Salut Domi et Michel,
Question pour Michel :
IsEmpty(c) est-il toujours équivalent à c=""
Serge
Sub Remplir_De_Dates_Alea_Par_Paquet_De_150()
Dim ici As Range, n As Integer, L As Integer
Set ici = Range("B10:B1000")
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
Do Until n = 150
L = Int(991 * Rnd + 1)
If ici(L, 1) = "" Then
ici(L, 1) = Date
n = n + 1
If WorksheetFunction.CountIf(ici, "") = 0 Then Exit Sub
End If
Loop
End Sub
Serge
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Voici une base de départ :
Sub DatesAlea()
Dim Ref As Range, NbCellVides As Long, c As Range, Debut As Range,
Delta
As Long, i As IntegerSet Ref = Range("Plage")
NbCellVides = Evaluate("SUMPRODUCT(ISBLANK(Plage) * 1)")
If NbCellVides <= 150 Then
For Each c In Ref
If IsEmpty(c) Then c = Date
Next c
Else
Set Debut = Range("B" & Ref.Row)
Delta = Ref.Rows.Count - 1
Randomize ' Initialisation du générateur de nombres au
hasard
Do
Set c = Debut.Offset(Delta * Rnd)
If IsEmpty(c) Then
c = Date
' c.Select
i = i + 1
End If
Loop Until i = 150
End If
End Sub
Il faut que la plage concernée (ici B10:B1000) ait été nommée
"Plage".
NbCellVides permet de déterminer si le nombre de cellules vides est
inférieur ou non à 150. Si oui, la date est inscrite dans toutes les
cellulesvides de "Plage".
Sinon, une succession de tirages au hasard permet de déterminer 150
cellules vides dans la plage, dans lesquelles on entre la date.
NB - Pour simplifier j'ai considéré que la plage concernée est
toujours
en colonne B (définition de Début).Bonsoir à tous,
Big pb... (au moins pour moi ! )
L'énoncé est simple... la solution l'est moins me semble-t-il...
Je voudrais, par VBA, inscrire la date du jour dans 150 cellules
vides
de laplage B10:B1000.
J'insiste sur le "vides", car le but serait ensuite de renouveler
la
chosesur la plage jusqu'à ce que toute la plage soit sélectionnée.
Cela me permet de soulever dès maintenant le cas ou il ne reste
pas 150
cellules vides...il faudrait que cela sélectionne ce qui reste...
Merci
Domi
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com