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 :

Comportement incompréensible du code ! [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Par défaut Comportement incompréensible du code !
    Bonjour à tous

    voici le code d'une listbox située sur un userform

    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
    41
    42
    43
    44
    45
    46
     
    Private Sub Box1_Change()
     
    Dim col As Integer, dateDeb As String, dateFin As Date, compteur As Integer, Durée As Integer, DateD As Date, ColD As Integer
     
        With Sheets("Planning")
     
            dateDeb = Box1.Value
            DateD = CDate(dateDeb)
            Durée = CLng(Me.TextBox2.Text)
     
                For ColD = 5 To 131
     
                    If DateD = .Cells(2, ColD) Then
                    GoTo suite
                    End If
     
                Next ColD
     
    suite:
            col = ColD
            Durée = Durée * 2
     
                For col = ColD To 131
     
                    If .Cells(2, col).Interior.Color = &HFFFFFF And compteur < Durée Then
     
                        compteur = compteur + 1
     
                    ElseIf Durée = compteur Then
     
     'Lechapitre qui pêche!!!!!
     
                        If .Cells(2, col - 1) = "" Then
                            Me.TextBox1.Text = .Cells(2, col - 2) & " " & "AM"
                        ElseIf .Cells(2, col - 1) <> "" Then
                            Me.TextBox1 = .Cells(2, col - 1) & " " & "PM"
                        End If
     
                    End If
     
                Next col
     
        End With
     
    End Sub
    si je contrôle le code pas à pas, aucun problème : la valeur de la cellule .Cells(2,col ou col - 1) est bien inscrite dans la textbox1 avec AM ou PM selon le cas, mais si j'exécute le code normalement, seul AM ou PM sont inscrit dans la textbox1

    Je n'y comprend vraiment rien ; quelqu'un aurait une piste ??????

    merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Peux tu zipper ton fichier et le poster pour que l'on regarde ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Par défaut
    http://mhfi0u.1fichier.com/
    j'ai mis le fichier en ligne à l'adresse ci-dessus
    pour lancer la macro concernée if faut aller sur la feuille planning et modifier une valeur dans la colonne Durée
    sinon le code est sur l'userform "CouleurA"
    encore merci pour votre aide

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Alors c'est simple il va faire l'opération de col = colD à col = 131
    En pas par pas ça va te le faire avec tous.
    En continu ça le fait tellement vite que tu ne vois que le 131 et en col 131 la ligne 2 est vide.. donc vide + "AM" = "AM"

    Je ne comprends pas ce que tu veux faire... Mais ton code n'est pas top..

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Par défaut
    En fait au début j'ai essayé de trouver la colonne de début avec la méthode find grace à la date choisie dans la box1 mais je n'y suis pas arrivé alors je me suis rabatue vers une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .range(.cells(2, 5),.cells(2,131)).find(DateD, lookat:=xlwhole, looking:=xlformula)
    ce code fonctionne parfaitement dans une autre feuille mais est ne donne rien dans la feuille "Planning"


    donc j'ai fait la boucle qui remplace la méthode Find pour trouver la colonne de départ (ColD)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For ColD = 5 To 131
     
                    If DateD = .Cells(2, ColD) Then
                    GoTo suite
                    End If
     
                Next ColD
     
    suite:
    La seconde boucle me sert pour l'instant qu'a trouver la date de fin de la tache en tenant compte des jour férié qui sont en gris, donc tant que le compteur n'est pas égale à la durée je passe en revue les colonne et j'incrémente le compteur que si la cellule est de couleur blanche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If .Cells(2, col).Interior.Color = &HFFFFFF And compteur < Durée Then
     
                        compteur = compteur + 1
    lorsque la durée = compteur je renseigne la textbox1 et grace à toi, je vois bien le problème et j'ai corrigé provisoirement le code en rajoutant un exit sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ElseIf Durée = compteur Then
     
                        If .Cells(2, col - 1) = "" Then
                            Me.TextBox1.Text = .Cells(2, col - 2) & " " & "AM"
                        ElseIf .Cells(2, col - 1) <> "" Then
                            Me.TextBox1 = .Cells(2, col - 1) & " " & "PM"
                        End If
                        Exit Sub
                    End If
    domage que je n'arrive pas à faire fonctionner la méthode find mais par expérience je sais que les dates compliquent toujours les choses

    enfin encore merci, comme d'à mon habitude l'erreur était si grosse que je ne la voyais pas

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Quand on ne sait pas ce que l'on fait ça ne marche pas... Pourquoi tu regardes dans des formules alors que c'est une donnée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColD = .Range(.Cells(2, 5), .Cells(2, 131)).Find(DateD, lookat:=xlWhole).Column

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

Discussions similaires

  1. jquery slideshow comportement étrange (code mini)
    Par cotede2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/09/2009, 18h48
  2. Comportement étrange d'IE sur interprétation code d'initialisation
    Par ephemere dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/07/2009, 16h32
  3. Réponses: 1
    Dernier message: 13/06/2007, 11h23
  4. Réponses: 3
    Dernier message: 14/03/2007, 21h29
  5. Comportement anormal de mon code?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 3
    Dernier message: 16/01/2007, 13h10

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