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 :

[VBA][Débutante] Fonction Excel avec Boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bon j'ai pas tous lu mais si tu utilise redim sur un tableau dont tu ve conservé le contenu rajoute preserve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim preserve Tableau(i + 1)

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    option base 0
    Function lapin()
     
    'on dimensionne une matrice de 1000 positions possibles
    Dim matrice(1000) As Boolean
    Dim boucle As Integer
    Dim boucle2 As Integer
    Dim trouve As Boolean
    Dim nb As Integer
    For boucle = 1 To 999
         'teste si la position existe
         trouve = False
         nb = boucle
         For boucle2 = 1 To 999
              If matrice(nb) Then
                   trouve = True
                   Exit For
                Else
                   nb = nb * 2
                   If nb > 1000 Then nb = nb - 1000
              End If
         Next boucle2
         If Not trouve Then
              'cette famille n'existe pas créons la
              MsgBox ("création d'une nouvelle famille de base" & boucle)
              nb = boucle
              For boucle2 = 1 To 999
                    If matrice(nb) Then
                         MsgBox ("cycle de " & boucle2 & " en " & nb)
                         Exit For
                      Else
                         matrice(nb) = True
                         nb = nb * 2
                         If nb > 1000 Then nb = nb - 1000
                    End If
     
              Next boucle2
         End If
    Next boucle
    End Function

  3. #3
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le but est ensuite de voir la tronche du graphe quand on part de 40, 41, 42 souris (nb_init)...
    On est plusieurs à pouvoir te dire que ce sera une exponentielle...
    Comme j'avais un moment...

    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
    21
    22
    23
    24
    25
    Sub JcompteMesSouris()
    Dim nbreMois As Integer, i As Integer, NbSouris As Double
        Range("A1").Select
        Selection.CurrentRegion.Delete
        'NbSouris = InputBox("Nombre de souris au départ")
        NbSouris = 40
        'nbreMois = InputBox("Indiquer la durée des copulations en mois")
        nbreMois = 12
        For i = 1 To nbreMois
            Cells(i, 1).Value = i
            Cells(i, 2).Value = NbSouris
            If NbSouris > 1000 Then Exit For
            NbSouris = NbSouris * 2
        Next
        MaDate = "1/" + CStr(i - 1) + "/" + CStr(Year(Now))
        MsgBox "Mois au cours duquel tu as 1000 souris si tu as démarré le 1er janvier " & Format(CDate(MaDate), "mmmm")
        Range("A1").Select
        MaPlage = Selection.CurrentRegion.Address
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(MaPlage), PlotBy _
            :=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
        Range("A1").Select
    End Sub
    Tu places ça dans un module par l'éditeur VB d'Excel
    Tu veilles bien à avoir une feuille nommée "Feuil1" VIDE

    ... et tu les comptes, tes souris

    Les inputbox sont là pour que tu puisses jouer un peu...

    A+


    Edit
    pour connaître le jour, il te reste à faire une règle de trois

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    désolé mais la courbe n'est pas exponentielle
    c'est une fonction périodique localement exponentielle
    le programme que j'ai livré plus haut liste les 5 familles de courbe
    il suffit de retrouver à quelle famille appartient le nombre de départ

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok ! Je ne répondais qu'à ça "Le but est ensuite de voir la tronche du graphe" et bien qu'une droite relie les x successifs, la "tronche" générale... Et c'est tes rats

    A+

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    ben démarre avex 500 lapins et tu vas voir la tronche des rats

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    ben démarre avex 500 lapins et tu vas voir la tronche des rats
    Je ne veux pas entrer dans ce débat d'rats !

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut
    J'ai modifié le code de ouskel'n'or, et du coup j'ai pu faire ce que je voulais, et j'obtient de très jolis graphes! Avec des périodicités et tout, c'est super
    Merci beaucoup!!!

    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
    21
    22
    Sub Chaos1()
    Dim iteration As Integer, i As Integer, nombre As Double
        Range("A1").Select
        Selection.CurrentRegion.Delete
     
        nombre = InputBox("Nombre de départ")
        iteration = InputBox("Nombre de doublements à effecter")
     
        For i = 1 To iteration
            Cells(i, 1).Value = nombre
            nombre = nombre * 2
            If nombre > 1 Then nombre = nombre - 1
        Next i
     
        MaPlage = Selection.CurrentRegion.Address
        Charts.Add
        ActiveChart.ChartType = xlLine
        ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(MaPlage), PlotBy _
            :=xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
        Range("A1").Select
    End Sub
    Edit
    T'as encore oublié les balises bref, j'ai encore été obligé de les mettre T'as vu les boutons "[code... et /code] c'est fait pour
    Ousk

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut
    T'as encore oublié les balises bref, j'ai encore été obligé de les mettre T'as vu les boutons "[code... et /code] c'est fait pour
    Ousk
    Je suis vraiment désolée, je ne savais pas
    Maintenant je ne les oublierai plus!

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors ? Ton affaire est résolue ? Si oui, t'as encore oublié de faire un clic en bas et à gauche de l'écran sur le bouton "Résolu"

    Faut tout y dire !


  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Effectivement... Mais ça suffira pour les bases a priori, car le but est de voir que si on part de nombres très proches on obtient des nombres de plus en plus éloignés...?

    mais pas du tout

    il s'agit de cycle si on part de nombres très proches on va inéluctablement
    tomber dans une des familles et entamer un cycle décalé

    si on exclut le nombre de départ de la série on atteint moins de 200 valeurs pour 1000 possibles et je le souligne seulement 5 cycles

    en fait pour un nombre le graphique intéressant ne comporte que peu de points c'est le nombre de valeurs intermédiaires entre lui et l'entrée dans
    une des familles existantes

    si tu reprends mon programme plus haut tu peux le scinder en deux parties
    constitution des familles
    génération des points de tous les nombres entre leur valeur et leur valeur d'entrées dans la famille
    par exemple 125 famille des 125 qui a pour série 125 250 500 0
    a pour graphe propre 125 250
    alors que 250 a pour valeur propre 250


    cela n'a rien à voir avec un effet papillon ou une percolation

    tu te trompes (ou on te trompe) sur la nature du problème
    par contre pour une biologiste c'est assez proche du jeu de vie
    qui n'est pas un vrai chaos
    d'ailleurs un chaos vrai nécessiterait autant d'information que de sorties
    ici il n'est nullement utile de connaitre les sorties du second cycle
    c'est comme ci je disais que 1/3 est chaotique sous prétexte qu'il me faudrait une infinité de 3 pour l'écrire alors qu'il suffit d'écrire 1/3

    d'ailleurs à ce sujet la suite étant cyclique je peux dans tous les cas de figure l'écrire sous une forme fractionnaire

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut
    Ouh la la il va falloir que je me penche bien sur le problème pour intégrer tout ça...
    Mais du coup ça sort du domaine du visual basic!
    Alors je vais envoyer un message privé à random pour lui filer mon mail, sait-on jamais, s'il veut bien me donner le sien et continuer à m'aider sur ce sujet!

    Merci encore à tous

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Code VBA: somme de cellules avec boucle unique
    Par Thomas4530 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2014, 05h16
  2. [XL-2010] Envoi mail par excel avec boucle pour tous les champs
    Par jul2012 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/11/2012, 14h54
  3. [VBA]Utiliser les fonctions Excel avec Access
    Par PsykotropyK dans le forum VBA Access
    Réponses: 8
    Dernier message: 18/04/2007, 13h58
  4. [VBA-E] Fonction excel DISTINCT
    Par repié dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2007, 07h45
  5. Réponses: 2
    Dernier message: 13/12/2006, 13h33

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