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 :

Enregistrement d'une chaine


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Enregistrement d'une chaine
    Bonjour,

    Nouveau sur le forum je cherche à savoir comment séparer des données pour les enregistrer sur une nouvelle feuille excel.

    J'ai importé le nom et prénom de la feuille conseiller
    J'ai importé le type de séance, le sujet, le N° communal et la date de la feuille Séances

    et je voudrais les enregistrés dans une nouvelle feuille gestion

    Mon problème c'est que ca n'enregistre que le type de séance sur la feuille conseiller...Pas tout compris

    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
    Private Sub ListBox1_Click()
    Me.ListBox1.RowSource = "SELECT Nom/Prénom from Conseiller;"
    End Sub
     
    Private Sub ComboBox2_Change()
    RowSource = "SELECT Type de séance/Sujet/N° Communal/Date from Séances;"
    End Sub
     
    Private Sub CommandButton1_Click()
    Sheets("Gestion").Range("B2") = ListBox1.Value
    Dim derligne As Integer
        If MsgBox("Validez-vous ces données ?", vbYesNo, "Confirmation") = vbYes Then
     
        derligne = Sheets("Gestion").Range("A65000").End(xlUp).Row + 1
     
        Cells(derligne, 1) = ListBox1.Value
        Cells(derligne, 2) = ComboBox2.Value
        End If
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload UserForm4
    End Sub
     
     
     
    Private Sub UserForm_Click()
     
    End Sub

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    Peut être comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(derligne, 1) = ListBox1.List(ListBox1.ListIndex)
    Dans tous les cas, voir http://silkyroad.developpez.com/VBA/...serForm/#LII-G

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bon je vais détailler un peu plus (maintenant que j'ai compris les balises)

    Dans l'Userform je récupère le nom et prénom de la table "Conseiller" dans une listbox.
    Je récupère le type de séance, sujet, date.. de la table "séances"

    Une fois sélectionner le ou les conseillers et la séance, je désire les enregistrer dans un nouveau tableau comprenant les colonnes "nom, Prénom, type de séance, sujet...)

    Et bien sur les enregistrer à la première ligne vide.

    Mon code ne reprend que le type de séance et l'enregistre perpétuellement sur la première ligne en effaçant l'ancienne entrée.

    Pas de mon niveau ca, merci de votre aide.
    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
     
    Private Sub ListBox1_Click()
    RowSource = "SELECT Nom/Prénom from Conseiller;"
    End Sub
     
    Private Sub ComboBox2_Change()
    RowSource = "SELECT Type de séance/Sujet/N° Communal/Date from Séances;"
    End Sub
     
    Private Sub CommandButton1_Click()
    Dim derligne As Integer
        If MsgBox("Validez-vous ces données ?", vbYesNo, "Confirmation") = vbYes Then
     
        derligne = Sheets("Gestion").Range("A65000").End(xlUp).Row + 1
        Cells(derligne, 1) = ListBox1.List(ListBox1.ListIndex)
        Cells(derligne, 3) = ComboBox2.Value
        End If
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload UserForm4
    End Sub
     
     
    Private Sub UserForm_Initialize()
        'spécifie la date du jour lors de l'affichage de l'USF
        DTPicker1.Value = Now
    End Sub
     
    Private Sub DTPicker1_Change()
            MsgBox DTPicker1.Value
    End Subb
    La modification apportée m'a beaucoup aidé et merci, mais cela ne prend que le nom et le type de séance.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Bonjour,


    Le problème de "Derligne" est que
    - sur une page vide, tu calcules 1
    - sur une page où seule la ligne 1 est utilisée tu calcules aussi 1.

    Donc tu écrit en Derligne+1 = 2
    la fois suivante tu as Derligne=1
    Donc tu écrit en Derligne+1 = 2
    ... Tu écris toujours sur la ligne 2.

    Essaye comme ça ?

    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
     
    Private Sub CommandButton1_Click()
        Dim Derligne As Double
        Dim Wsh As Worksheet
     
        Set Wsh = Sheets("Gestion")
     
        If MsgBox("Validez-vous ces données ?", vbYesNo, "Confirmation") = vbYes Then
     
            Derligne = Wsh.Range("A65000").End(xlUp).Row
            If Not Application.WorksheetFunction.CountA(Wsh.Cells()) > 0 Then Derligne = Derligne - 1   'la page est vide : Ligne 0
            Derligne = Derligne + 1
     
            Wsh.Cells(Derligne, 1) = ListBox1.List(ListBox1.ListIndex)
            Wsh.Cells(Derligne, 3) = ComboBox2.Value
     
        End If
     
        Set Wsh = Nothing
     
    End Sub
     
     
    Private Sub DTPicker1_Change()
            MsgBox DTPicker1.Value
    End Subb 'SUPPRIME LE B de Sub en trop ici

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Citation Envoyé par OBO29 Voir le message
    Bonjour,


    Le problème de "Derligne" est que
    - sur une page vide, tu calcules 1
    - sur une page où seule la ligne 1 est utilisée tu calcules aussi 1.

    Donc tu écrit en Derligne+1 = 2
    la fois suivante tu as Derligne=1
    Donc tu écrit en Derligne+1 = 2
    ... Tu écris toujours sur la ligne 2.
    Oublie toutes ses conner.... stp; je me suis planté dans l'analyse.

    Tu écrite en ligne 2 et suivantes. je ne vois donc pas où est le problème.

    Le programme test fonctionne et écrit en ligne 2 puis 3 puis4 .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub test333()
    Dim derligne As Integer
        'If MsgBox("Validez-vous ces données ?", vbYesNo, "Confirmation") = vbYes Then
     
        derligne = Sheets("Gestion").Range("A65000").End(xlUp).Row + 1
        Cells(derligne, 1) = "A" 'ListBox1.List(ListBox1.ListIndex)
        Cells(derligne, 3) = "B" 'ComboBox2.Value
        'End If
    End Sub
    A+

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour toutes ces infos et le temps passé a essayer de m'aider.

    Pour l'enregistrement en dernière ligne ca marche, y a plus ou pas de souci de ce côté la.

    Ou je m'arrache les cheveux (même si j'en ai plus) c'est sur l'enregistrement des valeurs et qui était ma question de base. J'ai essayé plusieurs choses mais je me retrouve avec l'enregistrement de la première valeur dans toutes les colonnes.

    Nom : Tableau conseil.png
Affichages : 83
Taille : 14,3 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CommandButton1_Click()
    Dim derligne As Integer
        If MsgBox("Validez-vous ces données ?", vbYesNo, "Confirmation") = vbYes Then
     
        derligne = Sheets("Gestion").Range("A65000").End(xlUp).Row + 1
        Cells(derligne, 1) = ListBox1.List(ListBox1.ListIndex)
        Cells(derligne, 2) = ListBox1.List(ListBox1.ListIndex)
        Cells(derligne, 3) = ComboBox2.Value
        Cells(derligne, 4) = ComboBox2.Value
        Cells(derligne, 5) = ComboBox2.Value
        Cells(derligne, 6) = DTPicker1.Value
        End If
    End Sub

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/09/2009, 19h24
  2. Réponses: 25
    Dernier message: 29/06/2009, 11h59
  3. Réponses: 2
    Dernier message: 02/09/2008, 14h17
  4. rechercher les enregistrements dont un champ contient une chaine
    Par faabriice dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/06/2008, 13h58
  5. Réponses: 3
    Dernier message: 12/10/2006, 13h23

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