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 :

Re boite dialogue userform [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Par défaut Re boite dialogue userform
    Bonjour,

    J'avais ouvert une discussion sur boite de dialogue userform, mais la discussion à été supprimé (Pkoi??).
    J'en rouvre donc une autre.
    Une solution m'avait été proposé. Elle marche bien mais m'étant mal exprimer elle ne correspond pas complètement à la réalité.
    Elle ne change les prix que de la première valeur rencontrée dans chaque onglet. Il peut y avoir plusieurs fois la même valeur dans chaque onglet.
    Les valeurs sont toujours colonne B et les prix sont toujours en face colonne E. Il n'y a que 9 valeurs (a,r,f,y,u,i,j,s,z) avec leur prix a changer.
    Il s'agit uniquement de ces valeurs. Les autres cases contenant d'autre valeurs dont il ne faut pas tenir compte.

    Merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    putot que de déposer le fichier
    montre nous le code et dis nous ou ca plante
    il est mal vu de déposer un fichier des le depart d'une discution
    ca fait du genre
    voila mon fichier pouvez vous me le faire SVP
    et ben non !!on n'est pas dans une banque de données ,c'est un forum d'entraide on fait rien a la place des autres

    si cela n'est pas assez clair relire la charte
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Oops, j'avais mal lu ton énoncé Dubinou. Comme je ne sais pas si tu as déjà récupéré le code au-dessus, j'ai préféré reposter plutôt que de remplacer dans mon avant-dernier post.
    Le bon code qui ne prend en compte que les 9 valeurs de référence :

    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
    Private Sub UserForm_Initialize() 'à l'initialsation de l'UserForm
    Dim TV As Variant   'déclare la variable TV (Tableau des Valeurs)
    Dim K As Integer 'déclare la variable K (incrément)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim O As Worksheet 'déclare la variable O (Onglets)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim J As Integer 'déclare la variable J (incrément)
    Dim NOC As Integer 'déclare la variable NOC (Nombre d'OCcurrences)
    Dim R As Range 'décalare la variable R (Recherche)
    Dim PA As String 'déclare la varoabe PA (Première Adresse)
     
    TV = Array("a", "r", "f", "y", "u", "i", "j", "s", "z") 'définit le tableau de valeurs TV
    K = 1 'initialise la variable K
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For Each O In Sheets 'boucle 1 : sur tous les onglets O du classeur
        On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
        Set PL = Application.Intersect(O.Range("B1:E1").EntireColumn, O.UsedRange.Rows) 'définit la plage PL dans l'onglet O
        If PL.Cells.Count > 1 Then 'condition 1 : si la plage PL contient plus d'une seule cellule (génère une erreur si la plage PL est vide)
            If Err <> 0 Then 'condition 2 : si une erreur a été générée
                Err.Clear 'supprime l'erreur
                GoTo suite 'va à l'étiquette "suite"
            End If 'fin de la condition 2
            On Error GoTo 0 'annule la gestion des erreurs
            TC = PL 'définit le tableau de cellules TC
            For I = 1 To UBound(TC, 1) 'boucles 2 : sur toutes les lignes I du tableau de cellules TC
                For J = 0 To 8 'boucles sur les 9 valeurs du tableau des valeurs TV
                    If TC(I, 1) = TV(J) Then 'si la valeur ligne I colonne 1 de TC est égale à la valeur J de TV
                        D(TC(I, 1)) = "" 'alimente le dictionnaire D avec la valeur ligne I, colonne 1
                        NOC = Application.WorksheetFunction.CountIf(O.Columns(2), TC(I, 1)) 'définit la variable NOC
                        Select Case NOC 'agit en fonction de la valeur variable NOC
                            Case 1 'si NOC vaut 1
                                ReDim Preserve TT(2, 1 To K) 'redimensionne le tableau de types TT
                                TT(0, K) = O.Name 'récupère le nom de l'onglet dans la première ligne du tableau de types TT
                                'récupère le numéro de ligne du type dans la seconde ligne du tableau de types TT
                                TT(1, K) = O.Columns(2).Find(TC(I, 1), , xlValues, xlWhole).Row
                                TT(2, K) = TC(I, 1) 'récupère le type dans la troisième ligne du tableau de types TT
                                K = K + 1 'incrémente K (rajoute une colonne au tableau de types TT)
                            Case Else 'tous les autres cas
                                Set R = O.Columns(2).Find(TC(I, 1), , xlValues, xlWhole) ''définit la recherche R
                                If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
                                    PA = R.Address 'définit l'adresse de la première occurrence trouvée
                                    Do 'exécute
                                        ReDim Preserve TT(2, 1 To K) 'redimensionne le tableau de types TT
                                        TT(0, K) = O.Name 'récupère le nom de l'onglet dans la première ligne du tableau de types TT
                                        TT(1, K) = R.Row 'récupère le numéro de ligne de l'occurrence trouvée
                                        TT(2, K) = O.Cells(R.Row, 2) 'récupère le type
                                        K = K + 1 'incrémente K
                                        Set R = O.Columns(2).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
                                    'boucle tant qu'il existe de nouvelle occurrences ailleurs qu'en PA
                                    Loop While Not R Is Nothing And R.Address <> PA
                                End If 'fin de la condition
                        End Select 'fin de l;'action en fonction de la valeur de la variable NOC
                    End If 'fin de la condition 3
                Next J
            Next I 'prochaine ligne de la boucle 2
        End If 'fin de la condition 1
    suite: 'étiquette
        On Error GoTo 0 'annule la gestion des erreurs
    Next O 'prochain onglet de la boucle 1
    Me.ComboBox1.List = D.keys 'alimente la ComboBox1 avec la liste des éléments du dictionnaire D sans doublon
    Me.ComboBox1.ListIndex = 0 'affiche le premier élément de la liste
    For I = 1 To UBound(TT, 2) 'boucle sur toutes les colonnes I du tableau de types TT
        If CStr(TT(2, I)) = Me.ComboBox1 Then 'condition : si la valeur ligne 2 colonne I de TT est égale à la valeur de la ComboBox1
            With Me.TextBox1 'prend en compte la TextBox1
                .Value = Sheets(TT(0, I)).Cells(TT(1, I), 5).Value 'récupère le prix correspondant
                .SetFocus 'place le curseur
                .SelStart = 0 'début de la sélection
                .SelLength = Len(.Value) 'longueur de la sélection
            End With 'fin de la prise en compte de la TextBox1
            Sheets("Feuil1").Select 'sélectionne l'onglet "Feuil1
            Exit Sub 'sort de la procédure
        End If 'fin de la condition
    Next I 'prochaine colonne de la boucle
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Juillet 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Juillet 2015
    Messages : 19
    Par défaut
    Merci Thautheme

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

Discussions similaires

  1. boite dialogue et code
    Par bertoli dans le forum Access
    Réponses: 4
    Dernier message: 27/11/2005, 20h46
  2. Boite dialogue + Affichage d'un bitmap
    Par gids01 dans le forum MFC
    Réponses: 8
    Dernier message: 23/11/2005, 16h50
  3. Réponses: 10
    Dernier message: 21/04/2005, 10h00
  4. [MFC] Impression d'une boite dialogue
    Par mick74 dans le forum MFC
    Réponses: 5
    Dernier message: 03/06/2004, 10h02

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