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 :

Code aléatoire pour toutes les cellules vides d'une colonne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut Code aléatoire pour toutes les cellules vides d'une colonne
    Bonjour le Forum,

    Je dois résoudre un soucy.
    J'ai ce code qui génère un nombre aléatoire dans ma colonne A pour toutes les lignes remplies dans la colonne B
    Le truc c'est que je remplie (insére des lignes) dans la BDD au fur et a mesure du temps.
    Donc les lignes insérées sont sans ce code aléatoire.

    Du coup, je me dis que dans mon USF de saisie (BASE EMPLOI) je pourrais générer ce code aléatoire directement dans le textbox CODEBASE, au moment de la saisie.

    --> Donc généré un code (en vérifiant un code non présent dans la colonne A de l'onglet "BASE EMPLOI'"

    Est-ce possible ?

    Bonne aprem

    Seb


    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
    Sub CODEBASE()
    Dim LeMax As Long
     
    Application.ScreenUpdating = False
    With Worksheets("BASE EMPLOI")
        LeMax = .Cells(.Rows.Count, "B").End(xlUp).Row
        With .Range("A2")
            .Value = 1
            .DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=LeMax - 1
        End With
        .Columns(2).Insert
        .Range("B2:B" & LeMax).Formula = "=RAND()"
        .Range("A2:B" & LeMax).Sort Key1:=.Range("B2"), Order1:=xlAscending, Header:=xlNo
        .Columns(2).Delete
    End With
     
     
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Ajoute ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Dim Teste As Variant
            'Génération du code aléatoire
            Randomize
            Teste = [A2]
            Do While IsNumeric(Application.Match(Teste, [A:A], 0))
                Teste = Int(Rnd * 100) + 1
            Loop
            Me.CODEBASE.Text = Teste

    à la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub FIN_Click()
    Note que la plage de nombres aléatoires est limitée à 100. Augmente-la au besoin.

  3. #3
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    Le code est nikel mais tourne en boucle.
    Il va jusq'ua me dire mémoire insuffisante et fait planter excel

    Dois-je le changer de position ?

  4. #4
    Membre actif Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Points : 285
    Points
    285
    Par défaut
    J'ai trouvé !
    Le problème venait que le nombre est limité à 100
    Je l’ai passé à 10000 et cela marche

    Nikel !

    Merci


    Bonne aprem

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Un seul code VB pour toutes les feuilles
    Par juan67 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/02/2013, 16h45
  2. [XL-2010] Supprimer les cellules vides d'une plage aléatoire et décaler à gauche
    Par ketum88 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/08/2011, 18h36
  3. [XL-2007] Un formule math pour toutes les cellules d'une colone
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/01/2010, 16h29
  4. [XL-2003] Remplacer toutes les cellules vides
    Par flet le kid dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/05/2009, 17h55
  5. Réponses: 2
    Dernier message: 20/02/2008, 18h08

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