XL 2016 Aide sur BDD

Lokeer

XLDnaute Nouveau
Bonjour à tous,

J'ai plusieurs problématiques dans mon fichier excel en PJ et vous allez surement pouvoir m'aider et m'orienter sur des idées.

1 - Dans l'onglet "Listing" :
Vous verrez que j'ai préparé un système de Référencement automatique (Colonne A) en fonction des données complétées dans les colonnes suivantes (Colonnes C et D). Le but est (comme indiqué dans le fichier) d'obtenir une mise en forme commune à tous mais "dynamique". Je suis parti sur une fonction Si...&... mais je pense que je fais fausse route, vous aurez surement une meilleure idée.

2 - Dans l'onglet "Activité" :
Ce Référencement doit me servir de base pour rapatrier les données de l'onglet "Listing". Ensuite, je souhaite pouvoir modifier puis enregistrer les données du tableau en fonction de cette même référence sans affecter les cellules des autres références.

Ce tableau sera modifié plusieurs fois par jour et risque d'inclure à terme plusieurs centaines de données car une ligne dans le tableau = une fiche dans le listing ; nous remplirons une ligne par semaine.

Je ne suis pas un professionnel du VBA, il est prévu que j'en fasse pour la partie "Création client" et quelques éléments divers mais je souhaiterais essayer de m'en passer au maximum sauf s'il n'y a pas moyen de fairer autrement. Etant vous tous des personnes perspicaces, vous pourrez surement m'orienter vers des idées ou des modifications à faire.

Merci d'avance pour votre aide !
 

Pièces jointes

  • Gestion.xlsm
    64.7 KB · Affichages: 21

GALOUGALOU

XLDnaute Accro
bonsoir lokeer
compliqué ce classeur mais passionnant. j'ai fait évoluer ta version.
un rapide condensé du fonctionnement
les formules sont posées en vba dans la colonne a et la colonne ad de la feuille listing. conclusion attention à toute modification du tableau en rajout ou suppression de colonne. cela impliquerait une modification des macros

tu as rajouté une ligne dans la feuille Listing. ce qui entraine une modification
Enrichi (BBcode):
Me.ComboBox5.RowSource = "Listing!A2:A" & LastLig
devient
Me.ComboBox5.RowSource = "Listing!A3:A" & LastLig

Enrichi (BBcode):
Me.TextBox51.Value = Cells(Me.ComboBox5.ListIndex + 2, 2).Value
devient
Me.TextBox51.Value = Cells(Me.ComboBox5.ListIndex + 3, 2).Value
et ainsi de suite pour toutes les lignes concernées



j'ai rencontré des problèmes que ne n'ai pas su solutionner dans une macro, aussi j'ai contourné le problème en ajoutant une feuille stock.
comme son nom l'indique, de manière transitoire elle récupére des informations (donc feuille à ne pas supprimer) (la finalité c'est que le classeur soit fonctionnel).
j'ai corrigé l'exécution de certaines macro qui ne pointent pas vers les bonnes cellules.
des boites de dialogue vous aideront au moment de la suppression d'informations.
je n'ai certainement pas tout vu.
je te laisse découvrir, le fonctionnement est intuitif. A toi d'adapter à tes exigences.
cordialement
galougalou
 

Pièces jointes

  • Copie de Copie de Gestion-VSPECIAL 4.0.xlsm
    297.8 KB · Affichages: 4

Lokeer

XLDnaute Nouveau
bonsoir lokeer
compliqué ce classeur mais passionnant. j'ai fait évoluer ta version.
un rapide condensé du fonctionnement
les formules sont posées en vba dans la colonne a et la colonne ad de la feuille listing. conclusion attention à toute modification du tableau en rajout ou suppression de colonne. cela impliquerait une modification des macros

tu as rajouté une ligne dans la feuille Listing. ce qui entraine une modification
Enrichi (BBcode):
Me.ComboBox5.RowSource = "Listing!A2:A" & LastLig
devient
Me.ComboBox5.RowSource = "Listing!A3:A" & LastLig

Enrichi (BBcode):
Me.TextBox51.Value = Cells(Me.ComboBox5.ListIndex + 2, 2).Value
devient
Me.TextBox51.Value = Cells(Me.ComboBox5.ListIndex + 3, 2).Value
et ainsi de suite pour toutes les lignes concernées



j'ai rencontré des problèmes que ne n'ai pas su solutionner dans une macro, aussi j'ai contourné le problème en ajoutant une feuille stock.
comme son nom l'indique, de manière transitoire elle récupére des informations (donc feuille à ne pas supprimer) (la finalité c'est que le classeur soit fonctionnel).
j'ai corrigé l'exécution de certaines macro qui ne pointent pas vers les bonnes cellules.
des boites de dialogue vous aideront au moment de la suppression d'informations.
je n'ai certainement pas tout vu.
je te laisse découvrir, le fonctionnement est intuitif. A toi d'adapter à tes exigences.
cordialement
galougalou

Merci pour ton retour ! C'est cool et on avance super bien je trouve ;-)

En faisant des tests, j'ai repéré un problème qui est surement léger mais je ne vois pas comment l'arranger car tu as du travailler une macro qui affecte la cellule :

J'ai cliqué sur Créer/Modifier puis j'ai créé un nouveau produit.
Ensuite j'ai cliqué sur Actualiser, j'ai pris la référence du produit créé précédemment (qui se terminait bien par …_1). J'ai créé une première ligne que j'ai validé : aucun problème. J'y retourne pour lui créer une 2ème ligne : A ce moment, la 2ème ligne a écrasé la 1er ligne et la référence est passé à …_222. J'ai ajouté une 3è ligne, elle a effacé la 2ème et la référence est passé à …_333, ...
A priori, l'actualisation affecte la colonne AD12 du listing, ce qui fait bugger la référence. Dans le code par contre je ne vois pas où ça se situe ?
 

GALOUGALOU

XLDnaute Accro
bonsoir

ok, je me perd dans tous les textbox, j'ai analysé ce problème et j'ai modifié le code de l'userformsaisie, à remplacer par

Enrichi (BBcode):
Private Sub CommandButton1_Click()
 Dim modif As Integer
 If MsgBox("Confirmez vous le remplacement des informations ?", vbYesNo) = vbYes Then
 If Not ComboBox1.Value = "" Then
 modif = ComboBox1.ListIndex + 3



 Cells(modif, 20) = TextBox44.Value
  Cells(modif, 21) = TextBox45.Value
  Cells(modif, 22) = TextBox46.Value
 Cells(modif, 23) = TextBox47.Value
Cells(modif, 24) = TextBox48.Value
 Cells(modif, 25) = TextBox49.Value
 Cells(modif, 26) = TextBox50.Value
  Cells(modif, 27) = TextBox51.Value
  Cells(modif, 28) = TextBox52.Value
 Cells(modif, 29) = TextBox53.Value
 
Call RECAP

 MsgBox ("Modification effectuée")
End If
Unload Me
Application.EnableEvents = True
Sheets("Activité").Select
Range("A1").Select
 Exit Sub
 Else
  MsgBox ("Modification abandonnée")
 End If
End Sub

cordialement
galougalou
 

Pièces jointes

  • Gestion-VSPECIAL 5.xlsm
    306.8 KB · Affichages: 4

Discussions similaires

Réponses
7
Affichages
303

Statistiques des forums

Discussions
312 339
Messages
2 087 407
Membres
103 539
dernier inscrit
RAPH2012