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 :

Cellules dans textbox


Sujet :

Macros et VBA Excel

  1. #21
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut De retour sur le sujet
    Bonjour à tous,

    Désolé de revenir si tard sur ce sujet, mais j'étais pris sur un autre.....

    Petit rappel :

    - J'ai toujours ce problème de textbox "synthèse" mal renseignés, du 1er au dernier textbox, cela doit se ranger du nombre de fois que le numéro est présent dans les cases "chevaux favoris" à "entraineurs favoris", sans qu'il ne compte les textbox vide.

    - De là, le résultat doit-être consigné dans la feuille "Bdd", mais pour cela je devrais m'en sortir!!!!

    Merci pour votre aide

    Seb
    Pièce jointe 174807

  2. #22
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Je bloque encore une fois
    Dans la procédure ci-dessous, j'ai un tableau (voir image plus haut post#16), qui me permet de trier et compter le nombre de fois qu'un numéro est présent, puis le classe par le nombre de fois que le numéro est présent (ordre du + grand au +petit), puis me retranscris le résultat dans des textbox (de 31 à 40)

    Hors dans ce tableau il peut y avoir des "Zéro", qui sont également comptabilisé.....Mais je ne le souhaite pas, il faut que les "zéros" soit exclu...

    Voici mon code:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Private Sub LancerAna_Click()
    'Lance l'analyse, le comptage du nb de x que les numéro sont présent
    Dim TabBase
    TabBase = Range(Cells(1, 1), Cells(3, 10))
     
    Dim TabRes() As Variant
    ReDim TabRes(1 To UBound(TabBase, 1) * UBound(TabBase, 2), 1 To 5)
     
    cpt = 1
    For I = 1 To UBound(TabBase, 1)
        For j = 1 To UBound(TabBase, 2)
            'Debug.Print TabBase(I, j)
            TabRes(cpt, 1) = TabBase(I, j)
            'Debug.Print TabRes(cpt, 1)
            cpt = cpt + 1
        Next j
    Next I
     
    ' repére le doublon !
    For I = 1 To UBound(TabRes, 1)
        For j = I + 1 To UBound(TabRes, 1)
            If TabRes(I, 1) = TabRes(j, 1) Then
                TabRes(j, 2) = "Doublon"
            End If
        Next j
    Next I
     
    ' Compteur du nombre de fois qu'il y a le numéro !
    For I = 1 To UBound(TabRes, 1)
        For j = 1 To UBound(TabRes, 1)
            If TabRes(I, 1) = TabRes(j, 1) Then
                TabRes(I, 3) = TabRes(I, 3) + 1
                TabRes(I, 4) = TabRes(I, 3) & TabRes(I, 1)
                TabRes(I, 5) = TabRes(I, 1)
                'TabRes(i, 5) = "Il y a " & TabRes(i, 3) & " fois le NB : " & TabRes(i, 1) & " x dans le Tableau"
            End If
        Next j
    Next I
     
    'Cells(13, 6).Resize(UBound(TabRes, 1), UBound(TabRes, 2)) = TabRes
     
    ' tri
    Call Tri(TabRes(), 4, LBound(TabRes, 1), UBound(TabRes, 1))
     
    'Cells(13, 6).Resize(UBound(TabRes, 1), UBound(TabRes, 2)) = TabRes
     
    cpt = Empty
    Dim TabAff() As Variant
    ' Compte le NB ligne sans doublon !
    For I = 1 To UBound(TabRes, 1)
        If TabRes(I, 2) <> "Doublon" Then
            cpt = cpt + 1
        End If
    Next I
    ReDim TabAff(1 To cpt, 1 To 1)
     
    cpt = 1
    For I = 1 To UBound(TabRes, 1)
        If TabRes(I, 2) <> "Doublon" Then
            TabAff(cpt, 1) = TabRes(I, 5)
            cpt = cpt + 1
        End If
    Next I
     
    Cells(7, 2).Resize(UBound(TabAff, 1), UBound(TabAff, 2)) = TabAff
     
    'y = 33
    y = Range("B" & Rows.Count).End(xlUp).Row
    For x = 31 To 40 'texbox de 31 à 40
      With Sheets("Analyses")
       If .Range("B" & y).Value >= 1 Then
          Me.Controls("TextBox" & x) = .Range("B" & y).Value
         y = y - 1 'en remontant
          'y = y + 1 'en descandant à partir de 33
        End If
      End With
    Next x
    'prévoir à consigner les num dans base de donnée "feuille BDD"
     
    End Sub
     
    Sub Tri(TabRes(), ColTri, gauc, droi) ' Quick sort
      ref = TabRes((gauc + droi) \ 2, ColTri)
      g = gauc: d = droi
      Do
        Do While TabRes(g, ColTri) < ref: g = g + 1: Loop
        Do While ref < TabRes(d, ColTri): d = d - 1: Loop
        If g <= d Then
           For k = LBound(TabRes, 2) To UBound(TabRes, 2)
             temp = TabRes(g, k): TabRes(g, k) = TabRes(d, k): TabRes(d, k) = temp
           Next k
           g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call Tri(TabRes, ColTri, g, droi)
      If gauc < d Then Call Tri(TabRes, ColTri, gauc, d)
     
    End Sub
    A+

  3. #23
    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
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Type Nb
        Nbr As Long
        Nb As Long
    End Type
    Sub test1()
    Dim T(100) As Nb, t2 As Nb
    Dim TabBase As Range
    Set TabBase = Range(Cells(1, 1), Cells(3, 10))
     
    'On compte les occurence
    For I = 1 To TabBase.Count
        T(Val(TabBase(I).Value)).Nbr = Val(TabBase(I).Value)
        T(Val(TabBase(I).Value)).Nb = T(Val(TabBase(I).Value)).Nb + 1
    Next
    'on trie le tableau
    For I = 1 To UBound(T)
        If T(I).Nb > T(I - 1).Nb Then
            t2 = T(I)
            T(I) = T(I - 1)
            T(I - 1) = t2
            I = I - 2
            If I < 0 Then I = 0
        End If
    Next
    txb = 1
    'on affiche les le valeurs.
    For I = 1 To UBound(T)
        If T(I).Nbr > 0 Then Me.controles("Texbox" & txb) = T(I).Nbr: txb = txb + 1
    Next
    End Sub
    Dernière modification par Invité ; 15/06/2015 à 12h17.

  4. #24
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Salut rdurupt,

    merci pour ton code, mais j'ai un souci

    que j'ai résolu en mettant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Type Nb
        Nbr As Long
        Nb As Long
    End Type
    De là il arrive bien dans la Sub test1, mais bloque sur "txb"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If T(I).Nbr > 0 Then Me.controles("Texbox" & txb) = T(I).Nbr: txb = txb + 1
    avec ce message d'erreur de compilation:
    Membre de methode ou de données introuvables
    pour ton code, je ne sais pas s'il fallait le mettre à la place de mon code????
    Seb

  5. #25
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub test1()
    Dim T(100) As Nb, t2 As Nb,txb as integer
    oui ce code fait la même chose (en mieux j'espère).

    J'ai gérer la priorité au plus grand nombre d'occurrences! Mais en deuxième lieu on peut trier en ordre de présence dans le tableau!

  6. #26
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Le tri doit se faire du plus grand nombre de fois present dans le tableau.

    Mais pourquoi j'ai ce message d'erreur:
    Membre de methode ou de données introuvables
    A cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .controles("Texbox" & txb) =
    Edit:

    C'est bon, j'ai trouvé
    Remplacé par
    Donc voice le nouveau code:
    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
    Sub LancerAna_Click()
     
    Dim T(100) As Nb, t2 As Nb
    Dim TabBase As Range
    Set TabBase = Range(Cells(1, 1), Cells(3, 10))
     
    'On compte les occurence
    For I = 1 To TabBase.Count
        T(Val(TabBase(I).Value)).Nbr = Val(TabBase(I).Value)
        T(Val(TabBase(I).Value)).Nb = T(Val(TabBase(I).Value)).Nb + 1
    Next
    'on trie le tableau
    For I = 1 To UBound(T)
        If T(I).Nb > T(I - 1).Nb Then
            t2 = T(I)
            T(I) = T(I - 1)
            T(I - 1) = t2
            I = I - 2
            If I < 0 Then I = 0
        End If
    Next
    txb = 1
    'on affiche les le valeurs.
    For I = 1 To UBound(T)
        If T(I).Nbr > 0 Then Me.Controls("Texbox" & txb) = T(I).Nbr: txb = txb + 1
    Next
    End Sub
    Dois-je mettre ce code dans l'usf?

    Car du coup j'ai encore une erreur à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("Texbox" & txb) = T(I).Nbr:
    Erreur d'exécution Objet spécifié introuvable

    DE meme aurais-tu une explication du pourquoi (100)?
    Et ici txb = 1
    Cela correspond au 1er Textbox?
    Seb

  7. #27
    Invité
    Invité(e)
    Par défaut
    Mon tableau fait 100 cheveux du dossard 0 qui n'existe jamais au 100.

    Chaque élément de la feuille Excel représente un dossard donc on peut compter chaque dossard dans sa position ascendante.
    En d'autres termes si A1=1 t(1).nb = 1; si en B2= 1 t(1).nb =2;C3=38 t(38).nb=1 etc...


    Puis ont trie le tableau du plus grand nombre d'occurrences a la plus petite.

    Bien sur si tu as que 10 textebox il faut quitter la boucle a la 11 ieme!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        If T(I).Nbr > 0 Then Me.Controls("Texbox" & txb) = T(I).Nbr: txb = txb + 1 
    If txb > 10 then exit for

  8. #28
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut re
    Bien sur si tu as que 10 textebox il faut quitter la boucle a la 11 ieme!
    ok pour ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If txb > 10 then exit for
    Mais j'ai toujours le fameux message d'erreur "objet introuvable"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("Texbox" & txb) = T(I).Nbr:
    Seb

  9. #29
    Invité
    Invité(e)
    Par défaut
    Désolé je suis sur mon téléphone portable! "TextBox"

  10. #30
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    y pas de quoi!!

    C pas facile pour tester....

    Mais toujours ce probleme d'erreur

    il y a un truc on ne dois pas parler de la meme chose

    J'ai 30 textbox de saisie qui se range dans le tableau
    et 10 textbox (de 31 à 40) qui me permettent de voir le résultat (voir message plus haut), du plus grand nombre de fois present au plus petit, range à partir du textbox31

    D'où mon interrogation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If T(I).Nbr > 0 Then Me.Controls("Texbox" & txb) = T(I).Nbr: txb = txb + 1 
    If txb > 10 then exit for
    Seb

  11. #31
    Invité
    Invité(e)
    Par défaut
    regarde la pièce jointe:
    Fichiers attachés Fichiers attachés

  12. #32
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Re
    Bon bah encore une fois bravo à toi, et pour ton expérience...

    C'est parfait

    juste une chose que j'ai modifié car lors du click sur "valider", il décalait les cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C = 10 Then L = L + 1: C = 0
    Passé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C = 11 Then L = L + 1: C = 0
    Et +1++++1 encore pour toi..

    Seb

  13. #33
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Autres questions
    Tu t'imagines bien que je ne m'arrêterai pas là....

    dans mon usf, il y a 4 séries de 10 textbox:
    1ere série--> Chevaux
    2ème --> entraineurs
    3ème --> jockey/driver
    4ème--> synthèse

    j'aimerai conditionner chaque série dans une feuille différente (une BDD quoi), comment lui dire que chaque série des 10 textbox va dans telle ou telle feuille après click sur valider pour la serie 1, 2 et 3, et la 4ème après click sur analyser?

    Seb

  14. #34
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set TabBase = Range(Cells(1, 1), Cells(3, 10))
     for i=1 to TabBase.count
         TabBase(i).value=me.controls("textbox" & i)
    Next

  15. #35
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    nos messages se sont croisés, il correspond à quoi ton code?
    C celui qui compte les occurrences?

    Un question pratique, j'utilise soit la touche "TAB" ou "Enter" pour passer d'un textbox à l'autre, comment faire pour que la touche "enter" serve à passer, non pas d'un textbox à l'autre mais d'une ligne de texbox à l'autre?

    Seb

  16. #36
    Invité
    Invité(e)
    Par défaut
    Ce code répond à ça
    juste une chose que j'ai modifié car lors du click sur "valider", il décalait les cellules

  17. #37
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Ok c bon pour moi...

    Un question pratique, j'utilise soit la touche "TAB" ou "Enter" pour passer d'un textbox à l'autre, comment faire pour que la touche "enter" serve à passer, non pas d'un textbox à l'autre mais d'une ligne de texbox à l'autre?
    dans mon usf, il y a 4 séries de 10 textbox:
    1ere série--> Chevaux
    2ème --> entraineurs
    3ème --> jockey/driver
    4ème--> synthèse

    j'aimerai conditionner chaque série dans une feuille différente (une BDD quoi), comment lui dire que chaque série des 10 textbox va dans telle ou telle feuille après click sur valider pour la serie 1, 2 et 3, et la 4ème après click sur analyser?
    Seb

  18. #38
    Invité
    Invité(e)
    Par défaut
    Il existe un événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     textbox1_kepressed(Keyascii,?)
    If keyascii=10 then textbox2.focus

  19. #39
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Ok merci je vais regarder çà, je te remercie de l'aide apportée.

    Je passe le sujet en résolu, car ces questions ne vont plus avec le sujet....

    Au plaisir

    Seb

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

Discussions similaires

  1. [XL-2007] Lister informations cellules dans textbox
    Par jcaspar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2015, 09h14
  2. [XL-2007] Valeur cellule dans textbox
    Par AidezMoiSvp dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2014, 15h47
  3. import cellule dans Textbox
    Par kitcarflo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/04/2008, 16h02
  4. Trouver et inscrire une cellule dans Textbox
    Par biloute91 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/04/2008, 12h03
  5. Réponses: 7
    Dernier message: 28/09/2007, 09h51

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