Problème d'inscription d'information dans une base de donnée

Bonjour,

J'ai une base de donnée contrôlé via des Userform. En faisant une recherche en fonction d'une référence je viens récupérer chaque ligne contenant cette référence ainsi que ses informations et la place dans une Collection qui me permet d'afficher par la suite seulement les lignes correspondantes dans une seconde Userform.

J'effectue les modifications nécessaires concernant les données, je valide et les modifications effectuées se replace dans la base de donnée.

Je peut également ajouter de nouvelle référence dans ma base de donnée. Pour cela je rentre les informations de la référence et une nouvelle ligne se créer à la première ligne vide détecter par excel et inscrit mes données.

Dernièrement mes utilisateurs m'on fait remonter des soucis concernant les références qu'ils rentrent dans la base de donnée.

En ajoutant plusieurs pièces d'affiler puis en enregistrant le fichier, quelques jours plus tard plus aucune référence inscrite dans la base de donnée.

Des fois en ajoutant une référence puis une autre la première disparait.
Le soucis est que j'ai effectué des tests mais impossible de reproduire le soucis de mon coter.

Y aurait-il une taille max concernant un tableau ou une collection? En considérant que ce n'est pas une erreur humaine j'aimerai savoir si il est possible qu'une erreur puisse se faire par le logiciel dû à une trop grosse base de donnée.

Pour info ce fichier se trouve sur un bureau à distance partagé par plusieurs personne. La base de donnée fait 11 colonnes pour un peu moins de 2400 lignes.

Bonjour Whytye

Y aurait-il une taille max concernant un tableau ou une collection?

Seule taille max à ma connaissance, celle du PC

Moins de 2400 lignes, je n'appelle pas ça une grosse base de donnée

Je pense que le souci est plus dans le code, mais sans fichier ni code...

A+

Ci-dessous mon code pour ajouter une pièce et encore en dessous celui pour effectuer une recherche dans ma base de donnée :

Private Sub OK_Click()

   'ActiveWorkbook.SaveCopyAs "C:\Users\ASAV4\Desktop\Sauvegarde\StockSAV2023CopiePreModif" & mois & ".xlsm"
    'PreSauvegardeDuFichier

    Quantitetotale.Value = Val(Quantiteneuve.Value) + Val(Quantiterécup.Value) + Val(Quantiteroccas.Value)

    If Referencepiece & AGENCE & Emplacementetagere & Quantiteneuve & Quantiteoccas & Marque & COMMENTAIRE & DESIGNATION & Quantiteroccas = "" Then
        MsgBox "Aucune information renseignée! Vérifier la saisie!", vbInformation
        Exit Sub
    End If

    If Referencepiece = "" Then
        MsgBox "Veuillez renseigner la référence de la pièce", vbInformation
        Exit Sub
    End If

    If Quantiteneuve & Quantiterécup & Quantiteroccas = "" Then
        MsgBox "Aucune quantité renseignée", vbInformation
        Exit Sub
    End If

    If AGENCE = "" Then
        MsgBox "Veuillez renseigner l'agence où se situe la pièce", vbInformation
        Exit Sub
    End If

    If Emplacementetagere = "" Then
        MsgBox "Veuillez renseigner l'emplacement de la pièce", vbInformation
        Exit Sub
    End If

    If DESIGNATION = "" Then
        MsgBox "Veuillez renseigner une désignation", vbInformation
        Exit Sub
    End If

    Sheets("Données").Select

    ligneajout = Range("B1").End(xlDown).Row + 1

    Range("A" & ligneajout) = Referencepiece & "_" & AGENCE & "_" & Emplacementetagere
    Range("C" & ligneajout) = AGENCE
    Range("D" & ligneajout) = Emplacementetagere
    Range("E" & ligneajout) = Quantiteneuve.Value
    Range("F" & ligneajout) = Quantiterécup.Value
    Range("G" & ligneajout) = Quantiteroccas.Value
    Range("B" & ligneajout) = Referencepiece
    Range("I" & ligneajout) = Marque
    Range("K" & ligneajout) = COMMENTAIRE
    Range("H" & ligneajout) = Quantitetotale.Value
    Range("J" & ligneajout) = DESIGNATION

    Sheets("Menu").Select

    'ActiveWorkbook.SaveCopyAs "C:\Users\ASAV4\Desktop\Sauvegarde\StockSAV2023CopiePostModif" & mois & ".xlsm"
    'PostSauvegardeDuFichier

    AJOUTERUNEPIECE.Hide
    Unload AJOUTERUNEPIECE

    'ActiveWorkbook.Save

End Sub
   Private Sub OK_Click()

    Dim tableau As Variant, tabResultat As Variant
    Dim References As New Collection
    Dim lig As Integer

    tableau = Feuil1.Range("A1").CurrentRegion

    'une boucle pour dimensionner le tableau resultat
    For i = LBound(tableau, 1) + 1 To UBound(tableau, 1) Step 1
        If tableau(i, 2) = Referencepiece Then
            References.Add i
        End If
    Next i

    If References.Count = 0 Then
        réponse = MsgBox("Aucun stock sur cette référence ou mauvaise syntaxe" & Chr(13) & Chr(10) & "Voulez-vous créer une nouvelle pièce?", vbYesNo + vbQuestion, "Pas de stock")
        If réponse = 6 Then
            AJOUTERUNEPIECE.Show
            RECHERCHERPIECEDETACHEE.Hide
            Unload RECHERCHERPIECEDETACHEE
        Else
        RECHERCHERPIECEDETACHEE.Hide
        Unload RECHERCHERPIECEDETACHEE
        End If
        Exit Sub
    End If

    'déplacer les lignes avec la référence dans un tableau filtré
    ReDim tabResultat(1 To References.Count, 1 To UBound(tableau, 2) + 1)

    For i = 1 To References.Count
        lig = References(i)

        For col = LBound(tableau, 2) To UBound(tableau, 2)
            tabResultat(i, col) = tableau(lig, col)
        Next col

        tabResultat(i, UBound(tabResultat, 2)) = lig
    Next i

RECHERCHERPIECEDETACHEE.Hide
Unload RECHERCHERPIECEDETACHEE
selectionnerPiece tabResultat

End Sub

Re,

Ce que je vois :

1) Pour trouver la dernière ligne vous faites un Down alors qu'en général il est préférable de faire un Up

2) Vous vous basez sur la colonne B, mais je ne vois pas la cellule Bx se remplir dans votre code

Sur ces constatations, je ferais plutôt

ligneajout = Range("A" & Rows.Count).End(xlUp).Row + 1

A+

La cellule B se rempli via la ligne lors d'un ajout de pièce

Range("B" & ligneajout) = Referencepiece

et elle est effectivement utilisé comme base pour la recherche de référence.

En ce qui concerne le Up je vais essayer, juste quelle est la différence entre Up et Down?

Re,

En ce qui concerne le Up je vais essayer, juste quelle est la différence entre Up et Down?

Pour le Down, si une cellule a été effacée (accidentellement) vous vous arrêtez sur cette cellule

Pour le Up, vous commencer par la fin de la feuille, donc moins de risque

Ceci dit, vous voudrez bien mettre à jour votre version d'Excel SVP, "français" ne veut rien dire
C'est par exemple 2016Fr, 2019Fr... O365Fr

A+

D'accord merci de votre réponse par contre je ne comprend pas votre remarque concernant ma version d'Excel.

Je ne vois pas où est indiqué comme vous dites "francais".

Re,

Je ne vois pas où est indiqué comme vous dites "francais".

Outch... dans votre résumé quand vous postez

image

C'est à modifier ici
https://www.excel-pratique.com/fr/compte/forum-profil

Voici par exemple le miens

image

A+

Rechercher des sujets similaires à "probleme inscription information base donnee"