Saisie BDD :lecture/sauvegarde [Résolu]

Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
- - Dernière réponse : New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
- 10 sept. 2019 à 09:58
Bonjour,

Fichier d’exemple : https://www.cjoint.com/c/IHBnGhAeKWI

J’aimerai crée une base de données avec des critère de saisie, j’ai besoin d’un peu d’aide pour bien faire des choses, pour ne pas trop chargé le programme, je pense qu’il y a les moyens de faire plus rapidement.

Je tape la valeur d’une ligne dans le textbox « Epuipement » et on vient charger les donné dans les textbox prévue dans frame « Caractéristique » depuis la feuille "Filtered Data SAP"

Et les bouton Next et Previous permet de lire les ligne haut et en bas depuis la ligne sélectionné, la ligne sélectionné à un tour de retard je ne sais pas pourquoi ?

Ce que j’aimerai faire c’est saisir les données dans les autres champ vides et les enregistrés avec le bouton « Save Data » dans la feuille « DataBase Application » avec les critères défini.

À chaque valeur saisie dans le textbox « Epuipement » charger les données de tous les champs.


Je ne sais pas s’il y a un moyen avec des boucles pour ne pas copier 100 lignes.

Merci de votre aide.
Salutations.



Configuration: Windows / Edge 18.17763
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421
1
Merci
bonjour, veux-tu dire que ta procédure TextBox_EquipementSAP_Change ne fait pas ce que tu souhaites?
peux-tu expliquer à nouveau en mentionnant tes procédures dans la description?

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60448 internautes nous ont dit merci ce mois-ci

yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
-
je pense alors que tu peux appliquer ma suggestion en #10.
n'oublie pas d'adapter le contenu des premières lignes pour que cela corresponde aux nom de tes champs.
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
-
par exemple, dans TextBox_EquipementSAP_Change, tu pourrais faire une boucle sur toutes les colonnes, en allant chercher les noms des champs en tête de colonnes, du genre
dim ncol as long
for ncol = 1 to 100
    Me.Controls("TextBox_" + CStr(.Cells(1, ncol))) = .Cells(nom.Row, ncol)
next ncol
f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
1170 -
Bonjour yg_be
Ca roule?

Cote rapidite excecution pour toutes recherches, je lui ai remis un code qui fait le boulot et le gars ne le teste meme pas.....

Pour son "probleme" textbox equipement, apparemment ca fait ce qu'il a demande, mais .......
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
-
bonjour f894009, tout va!
il y a une autre discussion en cours sur (presque) le même sujet?
f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
1170 -
Re,
ca flotte.

Rectification:
"Cote rapidite", est p'tete pas a lui qui j'ai remis un code…...

Pour le reste du code, a fait ce qu'il pensait etre bon ou qui marchait, d'ou des choses bizares ......
Commenter la réponse de yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421
1
Merci
qu'essaies-tu de faire ainsi?
            val.Select
            Me.TextBox_EquipementSAP.Value = Selection.Offset(1, 0).Value  ' Displays the value of a next line (down)
            val.Select

que veux-tu dire par "la ligne sélectionné à un tour de retard"?
peut-être voudrais-tu faire:
val.Offset(1, 0).Select
Me.TextBox_EquipementSAP.Value = Selection.Value

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60448 internautes nous ont dit merci ce mois-ci

yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
-
il faut remplacer la ligne 10 par la ligne que je propose.
je pense qu'il est inutile de traiter la colonne 1, qu'en penses-tu?
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
-
explication:
.Cells(1, ncol)
permet d'obtenir le contenu de la cellule en ligne 1 et en colonne ncol de l'onglet que tu as précisé dans le
with

CStr()
convertit le contenu en caractères (si jamais c'était un nombre)
New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
> yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
-
.Cells(2, ncol)

j'ai mis 2 car on commence à récupérer les donnée à partir de la ligne 2, mais j'ai tjrs le même erreur qui vient quand j'exécute.
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
-
il faut laisser 1, car on récupère le nom des champs sur la première ligne.
as-tu adapté le contenu de la première ligne de la feuille Filtred data SAP pour que cela corresponde aux noms de tes champs?
f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
1170 -
Re,

Autant pour moi, Controls avec un s dans le code que j'ai ecrit. je viens de rectifier….
Commenter la réponse de yg_be
Messages postés
6195
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 septembre 2019
389
0
Merci
Bonjour à tous,

Le plus simple, mettre la propriété TabIndex de chaque TextBox en fonction des colonnes:

TextBox_EquipementSAP = TabIndex 0

TextBox_Sortfield= TabIndex 1

etc.

et voici le code:

 Dim Ctrl As Control
For Each Ctrl In Controls
    If TypeName(Ctrl) = "TextBox" Then
Ctrl.Object.Value = Cells(2, Ctrl.TabIndex + 1) 'ligne 2 a adapter
    End If
Next Ctrl


Si cela avait été fait lors de la conception!!!

La programmation c'est 80% de cogitation à la préparation et 20 % pour le code
f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
1170 -
Bonjour a vous deux,

L' idee de mettre en nom de champs les noms d'objet est le mieux vu la soupe au niveau de l'ordre des champs.
Cependant, il lui faudra tester si CheckBox mettre a True/False en fonction de la valeur X/Vide du dit champ

Bonne chance…….
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
-
bonjour f894009, merci. je m'attendais à devoir faire une exception pour les checkbox, et j'aurais probablement proposé quelque chose de plus compliqué pour détecter le type de Control.
New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
> f894009
Messages postés
14712
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
9 septembre 2019
-
oui, la solution 58 marche, mais tout les checkbox sont cochés et sont grisé, il y a un moyen des les activer ou pas selon fonction de la valeur True/Vide du champ concerné.

j'ai essayé qqch comme ça mais je ne marche pas, je ne suis pas sure que c'est la bonne manière de faire.

    For Each Ctrl In Me.Controls
        If Ctrl.Name <> "YES" Then
            If TypeName(Ctrl) = "CheckBox" Then Ctrl.Value = False
        Else
            Ctrl.Value = True
        End If
        
    Next Ctrl


merci de l'aide
yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
421 > New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
-
tu ne montres qu'une partie de ce que tu as essayé: où l'as-tu mis dans ton code?
tu n'expliques pas comment déterminer, à partir de la valeur de la cellule, si la checkbox doit être cochée ou pas.
suggestion (sans savoir ce que tu veux exactement obtenir):
Private Sub Fill_Data_Fields()
Dim noms As Range
Dim ncol2 As Long, ctrl As Control
 ' Load the data from the DataBase Application sheet
With ThisWorkbook.Sheets("DB Application")
    Set noms = .Range("A3", .Cells(Rows.Count, "A").End(xlUp)).Find( _
    What:=Me.TextBox_EquipementSAP.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
    If Not noms Is Nothing Then
        For ncol2 = 24 To 67
            Set ctrl = Me.Controls(cstr(Sheets("Criteria Fields").Cells(1, ncol2)))
            If TypeName(ctrl) = "CheckBox" Then
                ctrl = (.Cells(noms.Row, ncol2).Value = "YES")
            Else
                ctrl = .Cells(noms.Row, ncol2).Value
            End If
        Next ncol2
    End If
End With
End Sub
New_VBA_User
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
> yg_be
Messages postés
8507
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 septembre 2019
-
ça fonctionne, c'est super,

Merci beaucoup.
Commenter la réponse de cs_Le Pivert
Messages postés
49
Date d'inscription
mardi 27 août 2019
Statut
Membre
Dernière intervention
11 septembre 2019
0
Merci
Merci à tous pour votre aide.

C'est sympa de compter sur une vrai communauté VBA :)
Commenter la réponse de New_VBA_User