Excel 2007 - macro nombre aléatoire

Bonjour.

Je souhaiterais une macro qui me permette de remplacer les cellules vides par des nombre décimaux aléatoires compris entre 0,0 et 0,9 (colonne A). Et ceci dans plusieurs fichiers ne comprenant pas forcément le même nombre de ligne ni le même nombre de cellule vide.

De plus, quand dans la cellule d'à côté (dans l'exemple la colonne B) il y a un chiffre supérieur à 0 (1 ou 2 ou 3), alors le nombre décimal doit être compris entre 2,0 et 9,9.

Cela est-il possible et comment?

Par avance merci.

17exemple.xlsx (21.40 Ko)

Bonsoir,

Pour la première question :

=ARRONDI.INF(ALEA();1)

Pour la deuxième question en A1 (on teste B1) :

=SI(B1>0;ALEA.ENTRE.BORNES(20;99)/10;ARRONDI.INF(ALEA();1))

A+

Bonjour.

C'est très intéressant mais je suis obligé de sélectionner chaque cellule vide pour copier la formule... Il faudrait plutot une macro qui qui remplace automatiquement les cellules qui sont vide.

Il faut une seconde pour "faire glisser" la formule de la cellule A1 à la cellule A50000 !

Faut quand même pas pousser !

Tu veux une macro :

Cells(1).Copy Range("A2:A10000")

Ya des feignants quand même...

A+

Bonsoir Askillaz, bonsoir le forum,

Le code ci-dessous renvoie des nombres aléatoires dans la colonne A du premier onglet d'un classeur :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Long 'déclare la variable I (Incrément de ligne)
Dim J As Byte 'déclare la variable J (incrément de nombre)
Dim TEST As Boolean 'déclare la variable TEST

Set O = Sheets(1) 'définit l'onglet O (à dapter à ton cas)
DL = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de l'onglet O
TC = O.Range("A1:B" & DL) 'définit le tableau de cellules TC
Randomize 'lance le générateur de nombres aléatoires
For I = 1 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau de cellules TC
    TEST = False 'initialsie la variable TEST
    If TC(I, 1) = "" Then 'condition 1 : si la valeur ligne I colonne 1 de TC n'est pas vide
        For J = 1 To 3 'boucle sur les 3 chifre (1, 2 et 3)
            'condition 2 : si le chiffre J (converti en texte) apparait dans la valeur ligne I colonne 2 de TC
            If InStr(1, TC(I, 2), CStr(J), vbTextCompare) <> 0 Then
                'renvoie dans la cellulel ligne I colonne 1 de O, un nombre aléatoire compris entre 2,0 et 9,9
                O.Cells(I, 1).Value = Int(80 * Rnd + 20) / 10
                TEST = True 'définit la variable TEST
            End If 'fin de la condition 2
        Next J 'prochain nombre de la boucle
        'si TEST est [Faux], renvoie un nombre aléatoire entre 0,0 et 0,9
        If TEST = False Then O.Cells(I, 1).Value = Int(10 * Rnd) / 10
    End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
End Sub

Ne te reste plus qu'à ouvrir les fichiers concernés un par un. Les remplir de nombres aléatoires, les sauver et les fermer. Je t'aurais bien écrit le code qui fait cela si tu avais daigné nous dire où se trouvent les fichiers et ce qui les différencie des autres...

Dernier point que faut il faire quand une cellule de la Colonne B est vide ?

• renvoyer un nombre aléatoire en colonne A entre 0,0 et 0,9 ?

• ne rien mettre ?

[Édition]

Bonsoir Galopin on s'est croisé...

Bonjour.

@Galopin:

Si je fais glisser, je remplace aussi les tirets (cellules non vides) par des chiffres, chose que je ne veux pas, je souhaite uniquement remplir les cellules vides. Et non je ne suis pas feignants

@ThauThème:

Mon fichier est confidentiel, désolé, je ne peux en divulguer plus . L'onglet lui se nomme "PLOMB".

Selon les dossiers, nombre de mesures et les lignes de mesures peuvent différer.

La colonne B (en réel colonne I) n'est jamais vide. La colonne A de mon exemple est en réalité une colonne "H".

Ne rien remplir lorsqu'un "-" se trouve en H. Il faut laisser le "-".

Cela te convient-il davantage ?

Bonjour,

Je ne vais pas voler le plaisir à ThauThème qui a déjà bien travaillé là-dessus...

A+

Bonjour le fil, bonjour le forum,

Askillaz a écrit :

Cela te convient-il davantage ?

C'est à toi qu'il faut demander ça !... Tu adapteras si tu veux mais sans plus de détails je ne peux rien faire de mieux...

Ok. Merci à vous deux. Bonne journée.

Rechercher des sujets similaires à "2007 macro nombre aleatoire"