Problème gestion d'une base de donnée

Bonjour à tous,

Je fais face à un petit problème pour l'automatisation d'une base de donnée.

Rapidement, je calcule des coefficients de déperditions pour des parois et je les associe à un numéro de local suivant la logique en exemple ici: si je suis à l'étage 4 local 9, la valeur de référence sera = valeur étage + (valeur local/10000) soit 4,0009 . Ensuite, dans une ligne horiontale, j'ajoute tous les coefficients. j'aimerai ensuite que la ligne que je rentre soit répertoriée dans un tableau juste en dessous.

Jusque là ça va mais après automatisation du tri dans le tableau, suivant ma référence (Etage,0000Local), j'aimerai que les valeurs s'insèrent là ou il faut si ce sont de nouvelles références (oubli d'un local ou ajout d'un nouveau) et si jamais dans ma ligne ou je rentre mes données je modifie un étage existant (référence déjà présente), que seules les nouvelles valeurs soient modifiées (écraser) sans insérer de nouvelle ligne comme pour un nouveau local et cmmencer à avoir des doublons. Voici mon fichier Excel pour mieux comprendre (feuille "Pertes" tableau (ref Etage Local M ext 1 ... .... Fen 3)

Même une idée sur la logique à avoir et qui peut m'aider à avancer est bonne à prendre

Merci d'avance

( Le but final est de ne devoir utiliser que les flèches clavier et le pavé numérique pour une question de rapidité (pas de souris) en se déplaçant que dans le tableau de gauche en tapant le n° de l'étage et le n° du local et en modifiant les valeurs pour que les résultats soient automatiquement recopiés au dessus du tableau pour automatiquement être insérés et trier par référence dans le tableau si nouveau local ou juste modifié dans le tableau si local déjà existant. désolé j'ai du mal à mettre des mots sur la logique souhaitée )

N'hésitez pas à me demander des informations complémentaires, je ne sais pas trop sur quel(s) point(s) vous voulez des précisions pour pouvoir m'aider dans ma réflexion. Je me doute que comprendre la logique et le fonctionnement souhaité n'est pas chose facile et je ne dois pas être des plus doué pour ça.

D'avance merci

J'ai résolu mon problème, voici le code si ça peut aider. Comme j'ai écris le code moi même pour moi même, je n'ai donc pas été explicite sur les commentaires pour toutes les sous étapes donc si vous souhaitez des précisions, n'hésitez pas.

Sub TestLocal()

' Déclaration des variables

Dim Last As Long

Dim i As Integer

Dim osheetPE As Worksheet

Set osheetPE = Sheets("Pertes")

osheetPE.Activate

' Détermination de la dernière ligne

Last = osheetPE.Range("O" & Rows.Count).End(xlUp).Row

Last = Last + 1

' Aller à la première référence à vérifier à chaque execution de la macro

i = 16

osheetPE.Range("O" & CStr(i)).Select

' Vérification de la présence du local

Do While ActiveCell.Address <> osheetPE.Range("O" & CStr(Last)).Address

osheetPE.Range("O" & CStr(i)).Select

If ActiveCell.Value = osheetPE.Range("O11").Value Then ' Si référence est égale, écraser les données

osheetPE.Range("O11:AI11").Copy ' Sinon, écraser les nouvelles données si local déjà existant

osheetPE.Range("O" & CStr(i)).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False

Exit Sub

Else

i = i + 1

osheetPE.Range("O" & CStr(i)).Select

End If

Loop

osheetPE.Range("O11:AI11").Copy ' Copier le nouveau local

osheetPE.Range("O" & CStr(Last)).Offset(1, 0).Select ' Selectionner la dernière cellule de la colonne et descendre encore d'une cellule

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False

' Trier le tableau si nouveau local ajouté à la dernière ligne

osheetPE.Range("O16:AI" & CStr(Last + 1)).Select

Selection.Sort Key1:=Range("O1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

Last = osheetPE.Range("O" & Rows.Count).End(xlUp).Row

osheetPE.Range("Q13") = Last

End Sub

Rechercher des sujets similaires à "probleme gestion base donnee"