IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème boucle nombre aléatoire. [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut Problème boucle nombre aléatoire.
    Bonjour à tous,

    Alors voilà j'ai un problème :
    Je suis débutant en programmation VBA et j'aimerai afficher une suite de chiffres aléatoires de la case D29 à X29 en automatique à l'aide de boule pour éviter de faire plein de ligne.

    Voilà mon début de programme et je suis bloqué il faudrait qu'un nombre aléatoire nouveau s'affiche dans la case juste à côté de D29 à X29.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit
    Sub exercice()
     
    Dim x As Double
    Dim v As Double
    Dim n As Double
     
    'nombre aléatoire entre 1 et 100 dans la 1er cellule (D29)
    Randomize
    cells(29, 4) = Int(100 * Rnd) + 1
     
    'boucle du nombre aleatoire
    For x = 1 To 100 + 1
    v = Int(100 * Rnd) + 1
     
    'rentre la nouvelle valeur dans la cellule suivante
     
    Next
     
    End Sub
    En espérant avoir été le plus claire possible sur mon problème je vous remercie d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub test()
    Randomize
    For x = 0 To 100 + 1
    Cells(29, 4).Offset(0, x) = Int(100 * Rnd) + 1 'de la cellule [D9] décalé vers la droite de X 
     
    'rentre la nouvelle valeur dans la cellule suivante
     
    Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For x =0 To 20 'ça ça fait de D29 à X29
    Cells(29, 4).Offset(0, x) = Int(100 * Rnd) + 1
     
    'rentre la nouvelle valeur dans la cellule suivante
     
    Next

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Merci ta solution a fonctionné parfaitement je ne connaissais pas cette fonction.

    J'ai donc associé ce programme à une macro (bouton).

    Quand j'appuie sur le bouton le programme s’exécute parfaitement.

    Maintenant est-ce qu'il serait possible que le programme se décale d'une ligne en dessous quand la ligne de D29 à X29 à été remplit.

    C'est-à-dire il faudrait que le programme passe à la ligne en dessous ( D30 à X30 ) en détectant si la ligne au-dessus est remplie ou non il passe a la

    suivante.

    En automatique jusqu'à D100 à X100 par exemple.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    et ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub aleaN()
    Dim x As Integer
    For x = 4 To 24
      Cells(29, x) = WorksheetFunction.RandBetween(1, 100)
    Next x
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    double boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub aleaN()
    Dim x As Integer, y As Integer
    For y = 29 To 100
      For x = 4 To 24
        Cells(y, x) = WorksheetFunction.RandBetween(1, 100)
      Next x
    Next y
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Ton programme ne marche pas sa met erreur d’exécution '438'.

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je l'ai testé sans problème, envoies un fichier bidon, on verra bien
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Re,

    Alors voici le fichier le programme de la première réponse marche mais il ne remplis pas tout le tableau de valeur il remplie seulement la ligne D29 à X29 et la colonne en Y à partir de D29.

    Ton programme est juste en dessous de l'autre.

    Moi ce que je voudrais ce que le programme remplissent la ligne D29 à X29
    Ensuite D30 à X30
    ......
    Jusqu’à D51 à X51

    Tout en détectant si la ligne au dessus est remplis ou non pour passer a la suivante.

    excel.xls

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Tout en détectant si la ligne au dessus est remplis ou non pour passer a la suivante.
    quelle ligne ? la ligne 29 est remplie quand tu lances le programme, donc je viens de ré-essayer avec tes nouvelles instructions, sans problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub aleaN()
     
    Dim x As Integer, y As Integer
    For y = 29 To 79
      For x = 4 To 51 Step 2 'cellules fusionnées
        cells(y, x) = WorksheetFunction.RandBetween(1, 100)
      Next x
    Next y
     
    End Sub
    attention, je viens de voir des cellules fusionnées
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Je t'est mit un Screenshots de ce que ça me fait pourtant le programme est écrit pareil je suis sur excel 2003 peut être que sa joue.

    Et ce que je voudrait c'est que le programme remplisse la ligne 29 de valeur aléatoire ensuite la 30 ensuite la 31 mais pas la suite :

    Il faudrait que a chaque lancement de programme il passe a la ligne suivante comme si il détectait que celle du dessus est déjà rempli.

    Nom : vba.JPG
Affichages : 1094
Taille : 171,9 Ko

  11. #11
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je te renvoie ton fichier tel que tu l'as envoyé avec mon code placé dans le bouton "Départ"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Je te remercie pour ton aide mais:

    Je vois bien que le tableau est rempli donc pour toi sa marche sans problème.

    Mais moi cela ne marche pas sur mon Excel quand j’appuie sur le bouton départ cela me donne ceci.

    J'ai Excel 2003 peut être un code trop évoluer pour Excel 2003 ?

    Cordialement je me reconnecte demain toute la journée.

    Nom : excel.JPG
Affichages : 863
Taille : 255,2 Ko

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    pas de souci avec la version 2003, bien au contraire !

    Suffit de suivre le code en mode pas à pas via la touche F8 pour voir quelle ligne déclenche l'erreur
    en pensant au passage à vérifier les valeurs des variables …

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    J'ai regarder en faisant F8 et c'est la ligne du Next qui déclenche l’erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub exercice()
    Dim x As Integer, y As Integer
    For y = 29 To 79
      For x = 4 To 51 Step 2 'cellules fusionnées
        cells(y, x) = WorksheetFunction.RandBetween(1, 100)
      Next x
    Next y
     
    End Sub
    J'ai essayer de les inverser mais rien ne change.

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    2 choses me sautent aux yeux.

    Il ne faut jamais utiliser Cells sans dire de quelle feuille.

    cells est écrit avec la première lettre en minuscule.
    Ce n'est pas normal. N'aurais-tu pas un Dim cells qui trainerait quelque part?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  16. #16
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir Alain,

    J'ai fait attention à tes remarques :

    1 - aucune variable n'est déclaré sous ce nom "cells"
    2 - En effet, chez moi également cells apparait avec c minuscule mais fonctionne
    3 - Même en ajoutant "ActiveSheet.cells(y, x)", cells reste en minuscule mais ne génère pas d'erreur non plus
    4 - Et, enfin si j'ouvre ou crée un nouveau fichier avec module bidon, cells apparait bien sous cette forme "Cells"

    Je ne sais pas ce qui se passe au niveau du fichier de l'auteur

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  17. #17
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une autre variante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub aleaN()
     
    With Feuil9.Range("D29:X51")
        '.Formula = "=RandBetween(1, 100)" 'Sur Excel 2003 il faudra ajouter l'AddIns Analysis ToolPak
        .Formula = "=INT(99*RAND())+1"
        .Value = .Value
    End With
    End Sub

  18. #18
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Pour le cells avec minuscule, il y a un moyen de rétablir le comportement normal.

    Ecrire Dim Cells en tête d'un module et taper Enter.
    Ensuite, supprimer cette ligne.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  19. #19
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour mercatog, alain, re le forum,

    Je ne sais pas si l'auteur va réapparaitre mais merci Alain, pour ta solution que je peux garder sous le coude mais qui me laisse sur ma faim quant à l'origine de ce problème de "cells".

    Quant à l'auteur, s'il revient, je lui conseille de suivre ce que mercatog préconise, à moins d'adapter sa version d'excel, si on se réfère à ce que stipule mercatog "Pour RandBetween, Sur Excel 2003 il faudra ajouter l'AddIns Analysis ToolPak"

    Bonne journée à tous
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par casefayere Voir le message
    merci Alain, pour ta solution que je peux garder sous le coude mais qui me laisse sur ma faim quant à l'origine de ce problème de "cells".
    Probablement l'opération inverse:
    Déclaration d'un Dim cells qui aura été supprimé par la suite...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Générer nombre aléatoire dans boucle
    Par dvp_zero dans le forum Débuter
    Réponses: 2
    Dernier message: 12/07/2011, 18h21
  2. Réponses: 14
    Dernier message: 13/03/2011, 20h14
  3. Problème génération nombre aléatoires
    Par Pim'Ouss dans le forum Général Java
    Réponses: 3
    Dernier message: 15/10/2010, 12h25
  4. [débutant] problème avec les nombres aléatoires
    Par happylife925 dans le forum Débuter
    Réponses: 12
    Dernier message: 10/03/2006, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo