XL 2016 VBA, compléter des lignes vides par une valeur incrémentale

ydemarin

XLDnaute Nouveau
Bonjour,

J'ai besoin d'aide pour finaliser un outil de gestion de stock.
Ma procédure permet de copier le stock d'un ancien système vers un nouveau.

Pour ce faire, j'avais pris le parti de renuméroter toutes les lignes de stock avec un nouveau N° de palette.
Cependant en pratique, dans certains cas j'ai déjà un numéro de palette et dans d'autres cas je n'en ai pas.
Cela dépend du type d'emplacement.
Il faut m'éviter de renuméroter les palettes déjà étiquetées (gain de temps)

J'ai besoin donc de revoir ma procédure mais je bloque.

résultat attendu : Je cherche à renseigner les lignes pour lesquelles le N° de palettes est vide en colonne C par un nouveau de palette mais il doit être unique à chaque fois. (d'ou l'incrémentation depuis un N° en Feuil3)
Pour les lignes avec un n° de palette déjà existant, je dois le conserver tel quel.

J'avais imaginer trier et filtrer pour ne travailler que sur les lignes vides mais les données étant vivantes font que les lignes changent tout le temps et je n'y parviens pas.

J'imagine qu' une boucle peut répondre à mon besoin mais je suis trop nul pour y parvenir.

Quelqu'un pourrait-il m'aider svp?

Fichier en pj.

Merci
 

Pièces jointes

  • TEST.xlsm
    4.2 MB · Affichages: 30

Lone-wolf

XLDnaute Barbatruc
Bonjour ydmarin

Si c'est le n° de la colonne B, il est déjà inscrit dans la feuille 2. Et là je ne comprend pas "créer un nouveau numéro de palette"?? :rolleyes:

En feuille1 le dernier numéro est P24473440 (dernière palette), logiquement tu devrait partir depuis ce numéro et incrémenter de 1.
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour pierrejean :)

En partant de ton idée.

VB:
Option Explicit

Sub Nouveau_Numero()
Dim i As Long, tbl, num

    Application.ScreenUpdating = False
  'Inscrire le numéro de B2 à A2
    num = Sheets(3).Range("a2").Value
 
    With Sheets(1)
        tbl = .Range("e2:e" & .Range("e" & Rows.Count).End(xlUp).Row)
        For i = LBound(tbl, 1) To UBound(tbl, 1)
            If Trim(tbl(i, 1)) = "" Then
               tbl(i, 1) = "P" & num
               num = num + 1
            End If
        Next
     
        .Range("e2:e" & Range("e" & Rows.Count).End(xlUp).Row) = tbl
    End With
    'Et là c'est le dernier numéro incrémenté
    Sheets(3).Range("a2") = num
End Sub

numero.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400