Problème de manque lignes aléatoire (difficile)

Bonjour à tous, je débute en macro Excel et j'essaye d'automatiser une base de donnée.

Mon problème est le suivant : Dans mon Excel, il me manque des lignes, il existe dans ma base de donnée 2 états (Plein;Vide) or je voudrai en faire apparaître un troisième.(CasierVide) Ce nouvel état correspondrai à toutes les lignes qui n'apparaissent pas actuellement sur mon Excel.

Tout d'abord, la construction du tableau n'est pas facile à comprendre. Mon système est un stockage avec 9216 rangements et mon objectif est de faire apparaître chacun de ces rangements avec son état associé. Or le problème est le troisième état (CasierVide) car les lignes correspondantes à ce dernier n'apparaissent pas. Il faut donc réussir dans un premier temps à détecter automatiquement toutes lignes manquantes pour la faire apparaître dans le tableau avec son état associé. La difficulté est le fait que les espaces de lignes manquants sont aléatoires.

Pour une allée il y a 4608 emplacements (A01 / A02)

Chaque allée possèdes deux étages (R02 / R03)

Pour chaque étages il y'a donc 2304 emplacements avec:

une hauteur y (1 : 9)

une longueur x (1 : 128)

pour chaque position (x;y) il existe 2 coté

J'ai donc dans un premier temps organiser mon excel par Allée/étage

Exemple : Sur ma pièce jointe, dès la première ligne il mange déjà deux lignes qui devraient être celle-ci,

Etatalléeétagecotéxy
CasierVideD01A01R02111
CasierVideD01A01R02211

J'ai essayé des méthodes utilisé sur d'autres Post mais je n'arrive pas à utiliser correctement la fonction (Selection.insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove)

Je ne connais pas trop le nom des fonctions sur Excel et j'utilise l'enregistrement de macro pour m'aider en générale, mais ici cela ne fonction pas.

Finalement, est-ce que quelqu'un pourrait à résoudre ce casse tête ? ^^

Si besoin, je peux vous apportez des informations complémentaires, n'hésiter pas à me solliciter !

PS : Je suis débutant dans ce langage de programmation, Si vous me donné des éléments de réponse en langage VBA n'hésitez pas à me détaller le fonctionnement <3

10probleme.xlsm (271.28 Ko)

bonjour,

une proposition (ajoute les manquants à la suite des données déjà présentes dans la feuille), ne fonctionne pas sur MAC

Sub aargh()
    Dim manquants(1 To 10000, 1 To 7) '10000 manquants maximum, à adapter éventuellement
    With Sheets("16_08vrai") 'on travaille avec cette feuille
        t = .UsedRange
        Set dict = CreateObject("scripting.dictionary") 'dictionnaire des clés existantes
        For i = 2 To UBound(t) 'on remplit le dictionnaire
            cle = ""
            For j = 2 To 7
                cle = cle & t(i, j)
            Next j
            If dict.exists(cle) Then
                MsgBox "doublon détecté " & cle & "ligne " & i & " et " & dict(cle): Exit Sub
            Else
                dict.Add cle, i
            End If
        Next i
        ' on détecte les manquant, on passe en revue toutes les combinaisons et on vérifie si la combinaison est présente dans le dictionnaire
        For d = 1 To 1 ' tous les D
            sd = "D" & Format(d, "00")
            For a = 1 To 2 ' toutes les allées
                sa = "A" & Format(a, "00")
                For r = 2 To 3 'tous les étages
                    sr = "R" & Format(r, "00")
                    For c = 1 To 2 'tous les côtés
                        For x = 1 To 128 'tous les x
                            For y = 1 To 9 'tous les y
                                cle = sd & sa & sr & c & x & y 'on crée la clé pour la recherche dans le dictionnaire
                                If Not dict.exists(cle) Then
                                    compteur_manquants = compteur_manquants + 1
                                    dict.Add cle, compteur_manquants
                                    manquants(compteur_manquants, 1) = "Casiervide"
                                    manquants(compteur_manquants, 2) = sd
                                    manquants(compteur_manquants, 3) = sa
                                    manquants(compteur_manquants, 4) = sr
                                    manquants(compteur_manquants, 5) = c
                                    manquants(compteur_manquants, 6) = x
                                    manquants(compteur_manquants, 7) = y
                                End If
                            Next y
                        Next x
                    Next c
                Next r
            Next a
        Next d
        .Cells(UBound(t) + 1, 1).Resize(compteur_manquants, 7) = manquants 'ajouter les manquants sur la feuille
    End With
End Sub
13probleme.xlsm (261.24 Ko)

C'est INCROYABLE ! ça fonction hyper bien, j'ai juste à refaire un filtre derrière et je retrouve tous mes manquants O_O

Merci énormément H2so4 <3

Rechercher des sujets similaires à "probleme manque lignes aleatoire difficile"