Private Sub valide_Click()
'
Dim RayonActu As Range, RayonDest As Range ' Rayonnages actuel et de destination
Dim PlageActu As Range, PlageDest As Range ' Plages actuelle du colis et de destination
Dim CellPleinesActu As Integer, CellPleinesDest As Integer ' Nombre de cellules non vides dans la destination
Dim Message As String
Message = ""
With Worksheets("Entrée").Range("A1:W40")
' Vérifier l'existence du rayonnage actuel du colis
If ComboBox1.Value = "" Then
Message = "/!\ Vous n'avez pas sélectionné le rayonnage actuel du colis !" & vbCrLf & vbCrLf
Else
Set RayonActu = .Find(ComboBox1.Value, LookIn:=xlValues)
If RayonActu Is Nothing Then Message = "/!\ Rayonnage actuel ( " & ComboBox1.Value & " ) non trouvé dans les entrées !" & vbCrLf & vbCrLf
End If
' Vérifier l'existence du rayonnage de destination du colis
If ComboBox2.Value = "" Then
Message = Message & "/!\ Vous n'avez pas sélectionné le rayonnage de destination !" & vbCrLf & vbCrLf
Else
If ComboBox2.Value <> "Sortie" Then
Set RayonDest = .Find(ComboBox2.Value, LookIn:=xlValues)
If RayonDest Is Nothing Then Message = Message & "/!\ Rayonnage destination ( " & ComboBox2.Value & " ) non trouvé dans les entrées !" & vbCrLf & vbCrLf
End If
End If
End With
If Message <> "" Then
MaReponse = MsgBox(Message, vbOKOnly + vbCritical, "Erreur")
Exit Sub
End If
' Vérifier si le rayonnage actuel du colis n'est pas totalement vide
Set PlageActu = Sheets("Entrée").Range(RayonActu.Address).Offset(1, 0)
Set PlageActu = PlageActu.Offset(0, 1).Resize(8, 1)
CellPleinesActu = Application.WorksheetFunction.CountA(PlageActu)
If CellPleinesActu = 0 And ComboBox2.Value <> "Sortie" Then Message = "/!\ Le rayonnage actuel ( " & ComboBox1.Value & " ) ne contient aucun colis..." & vbCrLf & vbCrLf
' Vérifier si le rayonnage de destination est totalement vide
If ComboBox2.Value <> "Sortie" Then
Set PlageDest = Sheets("Entrée").Range(RayonDest.Address).Offset(1, 0)
Set PlageDest = PlageDest.Offset(0, 1).Resize(8, 1)
DestNonVide = Application.WorksheetFunction.CountA(PlageDest)
If DestNonVide <> 0 Then Message = Message & "/!\ Le rayonnage de destination ( " & ComboBox2.Value & " ) n'est pas totalement vide !" & vbCrLf & vbCrLf
End If
' S'il y a un pb on demande s'il faut continuer tout de même
If Message <> "" Then
MaReponse = MsgBox(Message & vbCrLf & String(30, " ") & "Continuer tout de même ???", vbYesNo + vbQuestion, "Problème")
If MaReponse = vbNo Then Exit Sub
End If
' Si on veut colorier le bouton pour patienter
Déplacement.valide.BackColor = 14737632
Déplacement.Repaint
' Recopier les données de la source vers la destination
If ComboBox2.Value <> "Sortie" Then PlageDest.Value = PlageActu.Value
' Effacer les données de la source
PlageActu.ClearContents
' Si on veut colorier le bouton pour patienter
Application.Wait (Now + TimeValue("0:00:01"))
Déplacement.valide.BackColor = 8454016
Déplacement.Repaint
End Sub