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 :

Initialisation à l'ouverture de l'userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Par défaut Initialisation à l'ouverture de l'userform
    Bonsoir.
    J'utilise un Userform composé de 13 Textbox. Je souhaite que ma première Texbox soit alimentée à l'ouverture de l'userform par une des cellules de la colonne "c".
    Mon code commence toujours à la "A" même si je change la valeur de i. Comment puis je faire svp pour commencer à la colonne "c"?

    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
    Private Sub UserForm_Initialize()
    Dim hWnd As Long
    Dim lig As String
    hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
    "X", "D") & "Frame", Me.Caption)
    SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
    ' Chargement des valeurs de la Feuil1 dans les TextBox et les ComboBox
    With Sheets("BASE")
    lig = ActiveCell.Row
        For i = 1 To 13 ' boucle sur les contrôles
            If (i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6 Or i = 7 Or i = 8 Or i = 9 Or i = 10 Or i = 11 Or i = 12 Or i = 13) And .Cells(lig, i) <> "" Then
            Me.Controls("TextBox" & i) = .Cells(lig, i)
            End If
        Next i
    End With
    End Sub

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    J'ai du mal a comprendre pourquoi tu mets un test pour vérifier que i est bien entre 1 et 13 étant donné que tu te trouves dans une boucle for qui boucle entre 1 et 13!!

    Si tu veux démarrer sur la colonne C, démarre ta boucle à 3 jusqu'a 16.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With Sheets("BASE")
    lig = ActiveCell.Row
        For i = 3 To 16 ' boucle sur les contrôles
            If .Cells(lig, i) <> "" Then
            Me.Controls("TextBox" & i - 2) = .Cells(lig, i)
            End If
        Next i
    End With

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Par défaut
    J'utilise un autre userform pour lancer celui ci. Voici le code. J'ai mis ton code et maintenant il bug sur la ligne pour ouvrir l'userform à la ligne 14?

    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
    Private Sub CommandButton2_Click()
    Dim mot As String
    Dim trouvé1
    mot = TextBox2.Value
    Worksheets("base").Activate
    On Error GoTo 0
    Set trouvé1 = Worksheets("BASE").Range("C2:C400").Find(what:=mot)
    If trouvé1 Is Nothing Then
    MsgBox "Produit inconnu !": Exit Sub
    End If
    If Not trouvé1 Is Nothing Then
    trouvé1.Activate
    Unload Me
    modifbase.Show
    End If
    End Sub
    Et pour répondre à ta question, je débute depuis 1 mois et quand je commence à penser que j'ai compris et bien en faite c'est l'inverse. J'ai toujours rien compris!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Par défaut
    Erreur d'exécution
    Objet spécifié introuvable

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    J'ai du mal a comprendre le lien entre ma proposition de code et ce plantage.

    est ce que
    lance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Initialize()

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 123
    Par défaut
    Oui normalement ça le lance.

    Bonsoir Qwazerty. C'est bien là le problème. Je les ai même imprimé les tutos. J'ai bien compris que cela vient de la boucle. Mais j'ai vraiment du mal à piger le système des boucles!

    Voici tout le code utilisé dans mon userform. i est déclaré dans la partie public. Cet userform doit me servir pour modifier une base. J'ai modifié l'initialisation en adaptant le code de jérôme au mien. Les Textbox sont maintenant bien chargé à l'ouverture.
    Par contre lorsque je fais une modification et que je valide avec le CommandButton4_Click ça bug à la ligne N°36?
    Je souhaite que les valeurs des Textbox remplissent les cellules avec les modifications.
    Le CommandButton5 sert à supprimer les valeurs dans les cellules.


    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
    Private Declare Function GetWindowLongA Lib "User32" _
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long
     
    Private Declare Function SetWindowLongA Lib "User32" _
    (ByVal hWnd As Long, ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
     
    Private Declare Function FindWindowA Lib "User32" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Option Compare Text
    Option Explicit
    Dim i As Byte
    Private Sub CommandButton3_Click()
    Unload Me
    ' ActiveSheet.Protect "*69*", UserInterfaceOnly:=True
    Sheets("Gestion bobine").Select
    End Sub
     
    Private Sub CommandButton4_Click()
    Dim lig
    If TextBox1.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox2.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox3.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox4.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox5.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox6.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox7.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox8.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox9.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox10.Value = "" Then MsgBox "Format invalide !": Exit Sub
    If TextBox11.Value = "" Then MsgBox "Format invalide !": Exit Sub
     
    With Sheets("BASE")
    For i = 3 To 16 ' boucle sur les contrôles
        If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6 Or i = 7 Or i = 8 Or i = 9 Or i = 10 Or i = 11 Then
        .Cells(lig, i) = Me.Controls("TextBox" & i - 2).Value
        End If
    Next i
    End With
    Unload Me
    'ActiveSheet.Protect "*69*", UserInterfaceOnly:=True
    Sheets("Gestion bobine").Select
    'ActiveWorkbook.Save
    End Sub
     
     
    Private Sub CommandButton5_Click()
    Dim lig
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    TextBox5.Value = ""
    TextBox6.Value = ""
    TextBox7.Value = ""
    TextBox8.Value = ""
    TextBox9.Value = ""
    TextBox10.Value = ""
    TextBox11.Value = ""
     
    With Sheets("BASE")
    For i = 3 To 16 ' boucle sur les contrôles
        If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6 Or i = 7 Or i = 8 Or i = 9 Or i = 10 Or i = 11 Then
        .Cells(lig, i) = Me.Controls("TextBox" & i - 2).Value
        End If
    Next i
    End With
    Unload Me
    'ActiveSheet.Protect "*69*", UserInterfaceOnly:=True
    Sheets("Gestion bobine").Select
    'ActiveWorkbook.Save
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim hWnd As Long
    Dim lig As String
    hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
    "X", "D") & "Frame", Me.Caption)
    SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
    'Chargement des valeurs de la Feuil1 dans les TextBox et les ComboBox
    With Sheets("BASE")
    lig = ActiveCell.Row
        For i = 3 To 16 ' boucle sur les contrôles
            If (i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6 Or i = 7 Or i = 8 Or i = 9 Or i = 10 Or i = 11 Or i = 12 Or i = 13) And .Cells(lig, i) <> "" Then
            Me.Controls("TextBox" & i - 2) = .Cells(lig, i)
            End If
        Next i
    End With
     
    End Sub

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par Fred4345 Voir le message
    Et pour répondre à ta question, je débute depuis 1 mois et quand je commence à penser que j'ai compris et bien en faite c'est l'inverse. J'ai toujours rien compris!
    Salut

    L'idéal serait peut-être de commencer par les bases, en regardant par exemple les structure If ElseIf Else End If...

    La déclaration des variables également
    Tu devrais éviter de mettre des accents, essai également de toujours mettre au moins une majuscule pour pouvoir contrôler ce que tu tapes.

    Regarde du coté des tutoriels mis à disposition, ils sont là pour t'aider à débuter.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Quel message d'erreur?

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

Discussions similaires

  1. Ouverture d'un userform automatiquement à l'ouverture d'un document
    Par TaleMaker dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/01/2009, 19h24
  2. placer le curseur dans une textbox défini à l'ouverture d'un userform
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2008, 18h38
  3. Débutant : ouverture et fermeture UserForm
    Par zblook dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2007, 15h20
  4. [vba excel] lancer 3 module a l'ouverture de mon userform
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2007, 19h50
  5. VBA : ouverture d'un Userform sans passer par excel
    Par jemigo dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 23/11/2005, 17h28

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