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 :

Difficultés pour le fonctionnement d'une macro [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Difficultés pour le fonctionnement d'une macro
    Bonjour

    J'ai créé un petit programme sous excel (fichier joint) mais je n'arrive pas à le faire fonctionner. Je tiens à préciser que je suis novice ce qui explique mes difficultés.
    Quelqu'un peut-il m'apporter de l'aide?

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Il est difficile de corriger un code si on ne sait pas ce qu'il veut faire.
    J'ai tout de même jeté un coup d'oeil.
    J'ai modifié deux trois truc et fait quelques remarques. Si tu veux vraiment une aide efficace explique mieux ton problème, ce que tu veux faire, quelle ligne te pose problème...

    Je pense que tu devrais remplacer ton bouton sur la feuille par un controle activeX c'est plus maniable

    Voici le code dans Userform3:

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Private Sub CommandButton1_Click()
     
    Dim j As Long, k As Long ', Oui As Long 'Avec ce que tu faisait, seul Oui était défini comme Long, le reste en Variant
    Dim Datee As String
    Dim Oui As Boolean 'pour un vrai faux c'est mieux comme ça
     
    'Cells(1, "B").FormulaR1C1 = "=COUNTBLANK(C)"
    'j = Cells(1, "B").Value
    'Cells(1, "B") = ""
    'Un exemple pour utiliser une formule excel en macro: j = WorksheetFunction.CountBlank(Columns(3))
    'j = 65536 - j + 9
    'La partie du dessus est inutile, si tu veux trouver la dernière ligne utilisée d'une colonne fait:
    j = Range("C65536").End(xlUp).Row
    'k = 11
    Datee = TextBox1.Value & "/" & TextBox2.Value & "/" & TextBox3.Value
     
    Cells(1, "J") = TextBox4.Value
    Cells(2, "J") = TextBox5.Value
    Cells(3, "J") = TextBox6.Value
    Cells(4, "J") = TextBox7.Value
     
    'While k < j
    'Au lieu de While je préfère utiliser For
    For k = 11 To j Step 1
    '    If Cells(k, "B") = Cells(1, "J") Then Oui = True
    '    If Cells(k, "B") = Cells(2, "J") Then Oui = True
    '    If Cells(k, "B") = Cells(3, "J") Then Oui = True
    '    If Cells(k, "B") = Cells(4, "J") Then Oui = True
    'Je combinerai ces ligne comme ceci:
    If Cells(k, "B") = Cells(1, "J") Or Cells(k, "B") = Cells(2, "J") Or Cells(k, "B") = Cells(3, "J") Or Cells(k, "B") = Cells(4, "J") Then Oui = True
     
    If Oui = True Then
        Cells(k, "D") = Cells(k, "D") + 1
        Cells(k, "F") = CDate(Datee)
        Cells(k, "H") = 0
    Else
        Cells(k, "H") = Cells(k, "H") + 1
    End If
        Oui = False
    Next k
    '    k = k + 1
    'Wend
     
    'Cells(11, "A") = Cells(11, "A") + 1
    'Ici je mettrai directement la somme de la colonne D (je pense que c'est ce que tu veux)
     
    Cells(11, "A") = WorksheetFunction.Sum(Range("D11", "D" & Range("D65536").End(xlUp).Row))
     
    'Cells(1, "J") = ""
    'Cells(2, "J") = ""
    'Cells(3, "J") = ""
    'Cells(4, "J") = ""
    'Ici tu peux faire:
     
    Range("J1", "J4").Clear
     
    Unload UserForm3
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut re
    Un grand merci diude54

    pour mieux comprendre je vais prendre un exemple.
    Dans le userform je rentre 4 chiffres correspondant à la colonne noms si je rentre le chiffre 3, sur la ligne correspondant j'incrémente de 1 le nombre de partie gagnées, je mets la date à jour et je place un zéro dans la colonne écart et ce pour tous les chiffres du userform

    Ensuite j'incremente de 1 toute la colonne ecart excepté les cases des chiffres précedemment rentrés, et je fais +1 en A11.
    Voilà j'espère avoir été clair.

    Encore merci

  4. #4
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Voila un code qui fonctionne et je pense qu'il fait ce que tu souhaites.
    Enlève les 2 dernières textbox pour la date, ne garde que la première et saisi dedans une date comme ceci:
    16/09/2009
    Pour faire un test, tu peux toutes les conserver et ecrire dans la premeire 16/09/2009, ça fonctionne

    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
    Private Sub CommandButton1_Click()
     
    Dim j As Long, k As Long
    Dim Datee As String
    Dim PlageNom As Range, Trouve As Range
    Dim PlageEcart As Range, C As Range
    Dim Nom As String
     
    j = Range("B65536").End(xlUp).Row
    Set PlageNom = Range("B11", "B" & j)
    Set PlageEcart = Range("H11", "H" & j)
    'Si tu remplace les 3 textbox par une seule et fait comme ceci ça devrait fonctionner
    Datee = CDate(TextBox1.Value) '& "/" & TextBox2.Value & "/" & TextBox3.Value
     
    For Each C In PlageEcart ' on ajoute 1  à toutes les cellules de la colonne ecart
    C.Value = C.Value + 1
    Next C
     
     
    For k = 4 To 7 Step 1
     
    Nom = Me.Controls("Textbox" & k).Value
    Set Trouve = PlageNom.Find(Nom, LookIn:=xlValues, SearchOrder:=xlByColumns) ' on cherche le nom
    If Not Trouve Is Nothing Then
     
        Cells(Trouve.Row, "D") = Cells(Trouve.Row, "D") + 1
        Cells(Trouve.Row, "F") = Datee
        Cells(Trouve.Row, "H") = 0
     
    End If
     
    Next k
     
     
    Cells(11, "A") = WorksheetFunction.Sum(Range("D11", "D" & Range("D65536").End(xlUp).Row))
     
    Unload UserForm3
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A toutes fins utiles :

    -si le code de Diude54 vous convient (et je pense même dans tous les cas) n'oubliez pas de supprimer toutes les lignes inutiles, dans votre exemple de la 24 à la 65 536 puis les colonnes inutiles de la K à Y puis d'enregistrer votre fichier pour que le changement soit pris en compte.

    Dans l'état actuel, si vous deviez insérer une nouvelle ligne entre deux lignes existantes, cela serait refusé.

    De plus cela fait que la taille est de 2,391 Mo, énorme, par rapport au contenu utile !!!!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci à tous les deux

    tout fonctionne très bien mais je souhaite incrémenter de 1 dans la colonne nombre de parties gagnées et non mettre 1.

  7. #7
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    C'est ce que j'ai fait:
    EDIT:
    Désolé, j'avais oublié un truc dans ma macro, je l'ai corrigé dans mon post précédent ça devrait mieux fonctionner

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    j'ai du faire une erreur il ne me lance plus le userform il me met erreur de chargement de dll

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Un grand merci pour ton aide précieuse diude54 ainsi que jacques_jean

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

Discussions similaires

  1. [XL-2013] Difficultés pour la création d'une macro sur deux colonnes de nombres
    Par mr_hodor dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/07/2014, 12h49
  2. Réponses: 2
    Dernier message: 20/11/2011, 16h17
  3. [AC-2003] Besoin d'un coup de main pour le résultat d'une macro
    Par yassine06 dans le forum Access
    Réponses: 3
    Dernier message: 03/06/2010, 13h36
  4. Fonctionnement d'une macro
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/12/2008, 17h22
  5. Mauvais fonctionnement d'une macro d'enregistrement
    Par mbellemax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2007, 17h48

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