XL 2010 Verif fonctionnement vba

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
J'ai un gros doute sur le fonctionnement de mon EXCEL ??
Pourriez vous tester cette appli chez vous
Lancer USF en Bdd entrer par ex. en LOCAL VR03 > Deplacer : VR01
Normalement les données de VR03 vont se mettre en VR01 et VR03 s'efface
 

Pièces jointes

  • Déplacement colis.xlsm
    58.6 KB · Affichages: 10

TooFatBoy

XLDnaute Barbatruc
De même, la variable "Destination" est vide à cause du décalage dû au With.


Perso, je commencerais par essayer de remplacer
VB:
        If Not Ry Is Nothing Then
            lg = Ry.Row + 1: col = Ry.Column + 1
        End If
par
VB:
        If Ry Is Nothing Then Exit Sub
        lg = Ry.Row
        col = Ry.Column
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Merci Marcel
Oui j'ai aussi trouvé le VR03 et corrigé
Bon on cherche plus , trouvé
C'est pour un gars du forum ici
Il a mis ( parfois ) en destination par ex VR01 donc moi je cherche dans le tableau et donc dans ce cas il y en a 2 !!!!
Déjà au début de son post c'était incompréhensible ( dixit PatrickToulon & Phil69..)
Donc j'essaye de le remettre sur le bon chemin , mais donc comme tu vois quel casse tête !!!

Mais SUBSISTE un GROS PB !!!!!
tout fonctionne via VBA pas à pas mais PAS EN REEL ?????????? ( avec l'USF lancé)
Je mets la dernière version , la Loc se vide mais la destination n'est pas remplie ??? comme VR07 OK en pas à pas mais pas avant en direct !! jamais vu ça
Donc le fichier ou mon Excel ( j'ai eu des soucis ce dernier WE avec)
???
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Essaye plutôt ça, si ça te convient :
VB:
Private Sub valide_Click()
'
Dim Ry As Range  '( Rayonnage)
Dim RyD As Range

    LocaD = ComboBox1.Value

    With Worksheets("Entrée").Range("A1:W40")
        Set Ry = .Find(LocaD, LookIn:=xlValues)
        If Ry Is Nothing Then Exit Sub
        lg = Ry.Row + 1
        col = Ry.Column + 1

        c = .Cells(lg, col)
        T = .Cells(lg + 1, col)
        Bu = .Cells(lg + 2, col)
        Rd = .Cells(lg + 3, col)
        Re = .Cells(lg + 4, col)
        Pe = .Cells(lg + 5, col)
        Destination = .Cells(lg + 6, col)
        Orientation = .Cells(lg + 7, col)

        .Range(.Cells(lg, col), .Cells(lg + 7, col)).ClearContents

        LocaF = ComboBox2.Value

        Set RyD = .Find(LocaF, LookIn:=xlValues)
        If RyD Is Nothing Then Exit Sub
        lg = RyD.Row + 1
        col = RyD.Column + 1

        .Cells(lg, col) = c
        .Cells(lg + 1, col) = T
        .Cells(lg + 2, col) = Bu
        .Cells(lg + 3, col) = Rd
        .Cells(lg + 4, col) = Re
        .Cells(lg + 5, col) = Pe
        .Cells(lg + 6, col) = Destination
        .Cells(lg + 7, col) = Orientation

    End With

End Sub

ps : il parait que passer par un tableau va plus vite que de mettre les valeurs de cellules (contiguës) les unes à la suite des autres dans différentes variables pour les recopier ensuite dans d'autres cellules (également contiguës).

pps : il y avait un problème avec le .ClearContents qui plantait. J'ai corrigé. ;)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Avec un test pour savoir si la destination est vide :

VB:
Private Sub valide_Click()
'
Dim LocaActu As String, LocaDest As String  ' Localisations actuelle et de destination
Dim RayActu As Range, RayDest As Range      ' Rayonnages actuel et de destination

    With Worksheets("Entrée").Range("A1:W40")

        LocaDest = ComboBox2.Value
        Set RayDest = .Find(LocaDest, LookIn:=xlValues)
        If Not RayDest Is Nothing Then MaReponse = MsgBox("/!\ La destination n'est pas vide !" & vbCrLf & "Continuer tout de même ???", vbYesNo)
        If MaReponse = vbNo Then Exit Sub

        LocaActu = ComboBox1.Value
        Set RayActu = .Find(LocaActu, LookIn:=xlValues)
        If RayActu Is Nothing Then Exit Sub
        lg = RayActu.Row + 1
        col = RayActu.Column + 1

        c = .Cells(lg, col)
        T = .Cells(lg + 1, col)
        Bu = .Cells(lg + 2, col)
        Rd = .Cells(lg + 3, col)
        Re = .Cells(lg + 4, col)
        Pe = .Cells(lg + 5, col)
        Destination = .Cells(lg + 6, col)
        Orientation = .Cells(lg + 7, col)

        .Range(.Cells(lg, col), .Cells(lg + 7, col)).ClearContents

        LocaDest = ComboBox2.Value
        Set RayDest = .Find(LocaDest, LookIn:=xlValues)
        If RayDest Is Nothing Then Exit Sub
        lg = RayDest.Row + 1
        col = RayDest.Column + 1

        .Cells(lg, col) = c
        .Cells(lg + 1, col) = T
        .Cells(lg + 2, col) = Bu
        .Cells(lg + 3, col) = Rd
        .Cells(lg + 4, col) = Re
        .Cells(lg + 5, col) = Pe
        .Cells(lg + 6, col) = Destination
        .Cells(lg + 7, col) = Orientation

    End With

End Sub
 

TooFatBoy

XLDnaute Barbatruc
Juste avant dodo !!

Non il n'avait pas mis de code j'ai tout écrit
Ton code fonctionne ( en fait c'est le même ??) en PAS A PAS , mais si je lance l'USF la Loc se vide mais la Destination reste VIDE aussi ?????
J'avoue que je n'ai pas vérifié si la destination se remplie bien...et j'ai pensé que j'avais un problème d'indexation des cellules sur la destination, donc j'avais édité le code de #8.
Du coup, je ne sais pas si tu as bien pris le dernier.

Regarde si #13 te convient mieux. ;)


[edit]
LOL C'est n'importe quoi ce que j'ai fait pour le soi-disant test !...
Faut que je corrige ça.
[/edit]
 

Discussions similaires

Réponses
6
Affichages
869
Réponses
5
Affichages
448
Compte Supprimé 979
C

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
313 959
Messages
2 104 010
Membres
108 846
dernier inscrit
BENAFLA80