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 :

Problème gestion base de donnés


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut Problème gestion base de donnés
    Bonjour


    Je travail sur un petit utilitaire pour faire tourner mon club de Boxe Française et je rencontre quelques petits problèmes que je vais exposer :


    Je rencontre quelques petits bugs avec mes macros sur la gestion de la base de données :



    1) Lorsque je fais appel au UserForm et que je rentre en majuscule les noms et prénoms, au moment de valider la macro incrémente mes informations en minuscules dans les colonnes ? Pourrait on modifier la macro svp



    2) Toujours dans le UserForm, lorsque j'appelle par le numéro d'ordre une fiche adhérent que je veux supprimer, après avoir confirmé la suppression de l'information, si derrière je clique sur le bouton valider pour sortir du UserForm, il m'efface les données contenu dans toute la ligne A, sauf la cellule A1 ?? peux t'on me corriger le bug svp ?



    3) Dans la feuille compta ce sont les coordonnées de l'année en cours et je fais appel aux informations contenu dans la feuille de la base de données pour remplir les cellules.

    Lorsque j'ai deux adhérents de la même famille et que je recherche les informations dans la base de données il ne me fait pas la distinction des membres de la famille, mais il prend toujours le premier dans la liste, comment faire pour incrémenter correctement les cellules en fonction de la personne ??

    D'avance, merci

    A+, cordialement, chtixcel

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    fais ce test avec le code sur un textbox, tu adapteras aux autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Txt1_Change()
    Txt1.Value = UCase(Txt1.Value)
    End Sub
    edit : je ne pensais plus aux autres questions, je vais regarder

    bonne journée

    J'ai l'impression que tu as des erreurs et des variables non déclarées, rien que cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(lig, i + 1).Value = Application.Proper(Me.Controls("Txt" & i).Value)
    lig n'est pas déclaré et Application.Proper provoque les noms avec la première lettre en majuscule, le reste en minuscule, si tu veux tout en majuscule, sers-toi du code de mon post précédent ou change la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(lig, i + 1).Value = Ucase(Me.Controls("Txt" & i).Value)
    Mainternant, pour ta 2ème question, je te propose (essayes en faisant une copie de ton fichier) ce code à la place de celui de ton bouton "supprimer"
    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
    Private Sub CommandButton1_Click()
    Dim derLig As Integer, cherche As Range, plage As Range
    Application.ScreenUpdating = False
    With Sheets("Base Données Coordo Licenciés")
    derLig = .Range("a" & .Rows.Count).End(xlUp).Row
    Set plage = .Range("a2:a" & derLig)
    If Me.ComboBox1 <> "" And Me.ComboBox1 <> "New" Then
    Set cherche = plage.Find(ComboBox1)
        rep = MsgBox("Confirmez-vous la suppression de cet adhérent", vbYesNoCancel + vbDefaultButton2, "Suppression d'un adhérent")
        If rep = 6 Then
            .Range("b" & cherche.Row, "r" & cherche.Row).ClearContents
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortTextAsNumbers
            With .Sort
                .SetRange Range("B2:R" & derLig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End If
    End If
    End With
     
    Application.ScreenUpdating = True
    End Sub
    et dis-moi le résultat
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    pour ta 3ème question, je te propose de changer ta plage de reference "bd, comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='Base Données Coordo Licenciés'!$A$2:$R$981
    ensuite, tu enlèves ta formule de validation liste pour la colonne "B" de compta et tu mets la formule ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A19="";"";RECHERCHEV($A19;BD;2;0))'pour "b19"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A19="";"";RECHERCHEV($A19;BD;3;0))'pour "c19"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A19="";"";RECHERCHEV($A19;BD;4;0))'pour "d19"
    et ainsi de suite jusque la colonne qui t'interesse
    il ne te restera plus qu'a selectionner de b19 à ?19 et tirer la formule vers le bas

    à toi de voir

    edit : je viens de voir que tu n'as pas le meme nombre de lignes dans les deux feuilles, ta finalité est peut-etre différente pour la feuille compta ?
    si oui, oublies ce post
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    bonsoir chtixcel, re le forum

    Evites les messages privés pour les questions techniques car tout le monde doit pouvoir consulter (c'est le principe du forum)

    Il faut que je me replonge dans ton code mais pour la première question

    Pour la première réponse cela n'a pas fonctionné, il m'installe toujours en minuscule les noms que je rentre en majuscule ?
    , je te propose ce changement pour un nouveau membre :
    (pense toujours à déclarer toutes tes variables)
    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
    .......
    Else
        DerLig = [A65000].End(xlUp).Row + 1
        Cells(DerLig, 1).Value = Cells(DerLig - 1, 1).Value + 1
        For i = 1 To 17
            If IsNumeric(Me.Controls("Txt" & i)) Then
                Cells(DerLig, i + 1).Value = Val(Me.Controls("Txt" & i).Value)
            Else
            If i = 1 Then
                Cells(DerLig, i + 1).Value = UCase(Me.Controls("Txt" & i).Value)
            Else
            If i = 2 Then
                Cells(DerLig, i + 1).Value = Application.Proper(Me.Controls("Txt" & i).Value)
            Else
                Cells(DerLig, i + 1).Value = Application.Proper(Me.Controls("Txt" & i).Value)
            End If
            End If
            End If
        Next i
    ........
    pour la 2ème question
    Pour la deuxième réponses, j'ai colé le code lorsque je teste, il me soulign en jaune dans le vba la ligne suivante : .Sort.SortFields.Clear
    j'ai ré-essayé et ça fonctionnait parfaitement avec ce 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
    Private Sub CommandButton1_Click()
    Dim derLig As Integer, cherche As Range, plage As Range
    Application.ScreenUpdating = False
    With Sheets("Base Données Coordo Licenciés")
    derLig = .Range("a" & .Rows.Count).End(xlUp).Row
    Set plage = .Range("a2:a" & derLig)
    If Me.ComboBox1 <> "" And Me.ComboBox1 <> "New" Then
    Set cherche = plage.Find(ComboBox1)
        rep = MsgBox("Confirmez-vous la suppression de cet adhérent", vbYesNoCancel + vbDefaultButton2, "Suppression d'un adhérent")
        If rep = 6 Then
            .Range("b" & cherche.Row, "r" & cherche.Row).ClearContents
            .Sort.SortFields.Clear
            .Sort.SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortTextAsNumbers
            With .Sort
                .SetRange Range("B2:R" & derLig)
                .Header = xlNo
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End If
    End If
    End With
     Application.ScreenUpdating = True
    End Sub
    Pour le reste, je regarde tranquillement

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    pour ta troisième sugggestion :
    Pour la troisième réponse, je connaissais ce type de formule, mais je souhaite utiliser un mode liste déroulante
    tu n'as pas répondu à ma question ci-dessous :
    edit : je viens de voir que tu n'as pas le meme nombre de lignes dans les deux feuilles, ta finalité est peut-etre différente pour la feuille compta ?
    si oui, oublies ce post
    mais je ne comprends pas ton souhait dans la mesure où ta feuille compta reprends les données de l'autre feuille... à voir

    ça aurait été plus simple de te répondre si tu avais tout posté sur le forum, là, j'ai été obligé de jongler avec les messages publics et ton message privé
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. [VB6]Débutant - Problèmes de base de données?
    Par steeves5 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/06/2006, 22h05
  2. Problème conexion base de données MSSql DBE
    Par kaouane dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/05/2006, 12h40
  3. Réponses: 3
    Dernier message: 27/04/2006, 15h21
  4. Problème accès base de données
    Par alainconnu dans le forum Outils
    Réponses: 3
    Dernier message: 27/04/2006, 09h31
  5. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41

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