Code à nettoyer
Bonjour,
Sébastien m'a qualifié ce code de pas trés propre
Mais si quelqu'un pouvait me montrer comment le "nettoyer"
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (6)
' en insertion ligne, montant changeable
'(décalage une ligne spinbutton pas + bas que 2)
If Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "" Then
MsgBox "ok" 'si Range A2 BD = 2-1 et Range J2 BD
Sheets("BD").Range("E" & ligne_selectionnee) = Sheets("saisie").Range("E6") 'client
Sheets("BD").Range("F" & ligne_selectionnee) = Sheets("saisie").Range("F6") 'kms
Sheets("BD").Range("G" & ligne_selectionnee) = Sheets("saisie").Range("G6") 'liste deroul
Sheets("BD").Range("H" & ligne_selectionnee) = Sheets("saisie").Range("H6") 'obs
Sheets("BD").Range("I" & ligne_selectionnee) = Sheets("saisie").Range("I6") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (6)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee) = Sheets("saisie").Range("C6") 'date
Sheets("BD").Range("D" & ligne_selectionnee) = Sheets("saisie").Range("D6") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee) = Sheets("saisie").Range("E6") 'client
Sheets("BD").Range("F" & ligne_selectionnee) = Sheets("saisie").Range("F6") 'kms
Sheets("BD").Range("G" & ligne_selectionnee) = Sheets("saisie").Range("G6") 'liste deroul
Sheets("BD").Range("H" & ligne_selectionnee) = Sheets("saisie").Range("H6") 'obs
Sheets("BD").Range("I" & ligne_selectionnee) = Sheets("saisie").Range("I6") 'montant
End If
'2 eme ligne
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (7)
If Sheets("BD").Range("A" & ligne_selectionnee + 1) = ligne_selectionnee And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee + 1) = Sheets("saisie").Range("E7") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 1) = Sheets("saisie").Range("F7") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 1) = Sheets("saisie").Range("G7")
Sheets("BD").Range("H" & ligne_selectionnee + 1) = Sheets("saisie").Range("H7") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 1) = Sheets("saisie").Range("I7") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (7)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + 1) = Sheets("saisie").Range("C7") 'date
Sheets("BD").Range("D" & ligne_selectionnee + 1) = Sheets("saisie").Range("D7") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee + 1) = Sheets("saisie").Range("E7") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 1) = Sheets("saisie").Range("F7") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 1) = Sheets("saisie").Range("G7")
Sheets("BD").Range("H" & ligne_selectionnee + 1) = Sheets("saisie").Range("H7") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 1) = Sheets("saisie").Range("I7") 'montant
End If
'3eme ligne
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (8)
If Sheets("BD").Range("A" & ligne_selectionnee + 2) = ligne_selectionnee + 1 And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee + 2) = Sheets("saisie").Range("E8") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 2) = Sheets("saisie").Range("F8") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 2) = Sheets("saisie").Range("G8")
Sheets("BD").Range("H" & ligne_selectionnee + 2) = Sheets("saisie").Range("H8") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 2) = Sheets("saisie").Range("I8") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (8)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + 2) = ligne_selectionnee + 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + 2) = Sheets("saisie").Range("C8") 'date
Sheets("BD").Range("D" & ligne_selectionnee + 2) = Sheets("saisie").Range("D8") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee + 2) = Sheets("saisie").Range("E8") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 2) = Sheets("saisie").Range("F8") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 2) = Sheets("saisie").Range("G8")
Sheets("BD").Range("H" & ligne_selectionnee + 2) = Sheets("saisie").Range("H8") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 2) = Sheets("saisie").Range("I8") 'montant
End If
'4éme ligne
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (9)
If Sheets("BD").Range("A" & ligne_selectionnee + 3) = ligne_selectionnee + 2 And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee + 3) = Sheets("saisie").Range("E9") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 3) = Sheets("saisie").Range("F9") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 3) = Sheets("saisie").Range("G9")
Sheets("BD").Range("H" & ligne_selectionnee + 3) = Sheets("saisie").Range("H9") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 3) = Sheets("saisie").Range("I9") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (9)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + 3) = ligne_selectionnee + 2 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + 3) = Sheets("saisie").Range("C9") 'date
Sheets("BD").Range("D" & ligne_selectionnee + 3) = Sheets("saisie").Range("D9") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee + 3) = Sheets("saisie").Range("E9") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 3) = Sheets("saisie").Range("F9") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 3) = Sheets("saisie").Range("G9")
Sheets("BD").Range("H" & ligne_selectionnee + 3) = Sheets("saisie").Range("H9") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 3) = Sheets("saisie").Range("I9") 'montant
End If
' 5éme ligne
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (10)
If Sheets("BD").Range("A" & ligne_selectionnee + 4) = ligne_selectionnee + 3 And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee + 4) = Sheets("saisie").Range("E10") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 4) = Sheets("saisie").Range("F10") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 4) = Sheets("saisie").Range("G10")
Sheets("BD").Range("H" & ligne_selectionnee + 4) = Sheets("saisie").Range("H10") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 4) = Sheets("saisie").Range("I10") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (10)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + 4) = ligne_selectionnee + 3 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + 4) = Sheets("saisie").Range("C10") 'date
Sheets("BD").Range("D" & ligne_selectionnee + 4) = Sheets("saisie").Range("D10") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee + 4) = Sheets("saisie").Range("E10") 'client
Sheets("BD").Range("F" & ligne_selectionnee + 4) = Sheets("saisie").Range("F10") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + 4) = Sheets("saisie").Range("G10")
Sheets("BD").Range("H" & ligne_selectionnee + 4) = Sheets("saisie").Range("H10") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + 4) = Sheets("saisie").Range("I10") 'montant
End If
Code en feuille saisie
merci
fronck
Bonjour,
Avec un mot de passe sur l'accès au code (VBE) ????????
ric
le fichier sans mot de passe au vba.
Bonjour,
Répéter 5 fois le même code avec de petites incrémentations ...
Je ne suis pas un expert, mais je dirais qu'une boucle aurait été mon choix.
ric
Bonjour,
j'y ai pensé, mais çà ne réduit pas le nombre de ligne pour moi.
fronck
Bonsoir,
La première chose à faire est de créer une procédure générique pour l'appeler en fonction de paramètres du genre :
Sub Remplissage(R as integer)
'remplissage BD pour les champs manquants d'une ligne CB en 1ere ligne (8)
If Sheets("BD").Range("A" & ligne_selectionnee + R + 1) = ligne_selectionnee + R And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("E8") 'client
Sheets("BD").Range("F" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("F8") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("G8")
Sheets("BD").Range("H" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("H8") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("I8") 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (8)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + R + 1) = ligne_selectionnee + R And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("C8") 'date
Sheets("BD").Range("D" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("D8") 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("E8") 'client
Sheets("BD").Range("F" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("F8") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("G8")
Sheets("BD").Range("H" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("H8") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("I8") 'montant
End If
End Sub
et faire les appels :
For i = 0 to 4
Call Remplissage(i)
Next i
Ensuite, on peut dire qu'il y a des renseignements communs et donc :
Sub Remplissage(R as integer)
Sheets("BD").Range("E" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("E8") 'client
Sheets("BD").Range("F" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("F8") 'kms
Sheets("BD").Range("G" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("G8")
Sheets("BD").Range("H" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("H8") 'obs
Sheets("BD").Range("I" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("I8") 'montant
If Sheets("BD").Range("A" & ligne_selectionnee + R + 1) = ligne_selectionnee + R And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("C8") 'date
Sheets("BD").Range("D" & ligne_selectionnee + R + 1) = Sheets("saisie").Range("D8") 'prestataire
End If
End Sub
devrait fonctionner.
Bonjour,
désolé, mais ne te comprenant pas j'ai fait avec mes bases une double boucle et çà marche dans ce sens (macro generer lignes) :
i = ligne_selectionnee
For j = 6 To 10
'n° lignes en commençant par 1 alors que ligne_selectionnée commence à 2 en BD
Worksheets("saisie").Range("A" & j) = Sheets("BD").Range("A" & i)
'jour de la semaine en chiffres (1 = dimanche, 7 = samedi, valeurs en cellules
Worksheets("saisie").Range("B" & j) = Weekday(Sheets("BD").Range("C" & i))
'date au format 'Format(date_test, "dd.mm.yy")
Worksheets("saisie").Range("C" & j) = CDate(Sheets("BD").Range("C" & i))
Worksheets("saisie").Range("D" & j) = Sheets("BD").Range("D" & i)
Sheets("saisie").Range("E" & j) = Sheets("BD").Range("E" & i)
Sheets("saisie").Range("F" & j) = Sheets("BD").Range("F" & i)
'listes déroulantes: valeurs en cellules
Sheets("saisie").Range("G" & j) = Sheets("BD").Range("G" & i)
'cols OBS
Sheets("saisie").Range("H" & j) = Sheets("BD").Range("H" & i)
'alertes remplissage
If Sheets("saisie").Range("H" & j) = "" Then
Sheets("saisie").Range("H" & j) = _
"=IF(RC[-1]=""divers"",""Veuillez préciser svp"",IF(RC[-1]=""resto bar accompagné"",""veuillez nommer les invités (ou initiales société)"",""""))"
End If
'cols chiffres
Sheets("saisie").Range("I" & j) = Sheets("BD").Range("I" & i)
i = i + 1
Next j
fronck
Bonjour à tous,
Pour le code dit "pas très propre" ... un essai ...
La première condition = ""
et ElseIf = "perso"
est différente des 4 autres lignes <> "perso"
et ElseIf = "perso"
On a donc besoin de deux blocs ...
Dim Y As Byte
Dim Z As Byte
If Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "" Then
For Z = 0 To 4
Sheets("BD").Cells(ligne_selectionnee, 5 + Z) = Sheets("saisie").Cells(6, 5 + Z)
Next Z
ElseIf Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
For Z = 0 To 6
Sheets("BD").Cells(ligne_selectionnee, 3 + Z) = Sheets("saisie").Cells(6, 3 + Z)
Next Z
End If
For Y = 1 To 4
If Sheets("BD").Range("A" & ligne_selectionnee + Y) = ligne_selectionnee + (Y - 1) And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
For Z = 0 To 4
Sheets("BD").Cells(ligne_selectionnee + Y, 5 + Z) = Sheets("saisie").Cells(6 + Y, 5 + Z)
Next Z
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + Y) = ligne_selectionnee + (Y - 1) And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
For Z = 0 To 6
Sheets("BD").Cells(ligne_selectionnee + Y, 3 + Z) = Sheets("saisie").Cells(6 + Y, 3 + Z)
Next Z
End If
Next Y
ric
Bonjour ric,
je me suis accordé une fantaisie, mais pour moi ="" ou <>"perso" signifiat la même chose.
désolé.
merci
fronck
Bonjour,
Good, il y a un bloc de moins
ric
Bonjour,
On peut modifier, par exemple :
Sheets("BD").Range("E" & ligne_selectionnee) = Sheets("saisie").Range("E6")
Sheets("BD").Range("F" & ligne_selectionnee) = Sheets("saisie").Range("F6")
Sheets("BD").Range("G" & ligne_selectionnee) = Sheets("saisie").Range("G6")
Sheets("BD").Range("H" & ligne_selectionnee) = Sheets("saisie").Range("H6")
Sheets("BD").Range("I" & ligne_selectionnee) = Sheets("saisie").Range("I6")
par :
Sheets("BD").Cells(ligne_selectionnee, 5).Resize(, 5).Value = Sheets("saisie").Cells(6, 5).Resize(, 5).Value
Cdlt.
Bonjour à tous,
... je me suis accordé une fantaisie, mais pour moi ="" ou <>"perso" signifiat la même chose ...
Il ne reste donc que ceci pour faire la même chose que le code de la demande ...
que l'on retrouve dans la macro ...
Private Sub CommandButton_enregistrer_Click()
Dim Y As Byte
Dim Z As Byte
For Y = 0 To 4
If Sheets("BD").Range("A" & ligne_selectionnee + Y) = ligne_selectionnee + (Y - 1) And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
For Z = 0 To 4
Sheets("BD").Cells(ligne_selectionnee + Y, 5 + Z) = Sheets("saisie").Cells(6 + Y, 5 + Z)
Next Z
ElseIf Sheets("BD").Range("A" & ligne_selectionnee + Y) = ligne_selectionnee + (Y - 1) And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
For Z = 0 To 6
Sheets("BD").Cells(ligne_selectionnee + Y, 3 + Z) = Sheets("saisie").Cells(6 + Y, 3 + Z)
Next Z
End If
Next Y
ric
Bonjour à tous,
Comme indiqué hier à 23h21, j'ai trouvé la solution, mais j'ai pris l'exemple du code de
sub generer lignes
J'ai fait pareil pour
Private Sub CommandButton_enregistrer_Click()
avec
For i = 6 To 10
If Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) <> "perso" Then
Sheets("BD").Range("E" & ligne_selectionnee) = Sheets("saisie").Range("E" & i) 'client
Sheets("BD").Range("F" & ligne_selectionnee) = Sheets("saisie").Range("F" & i) 'kms
Sheets("BD").Range("G" & ligne_selectionnee) = Sheets("saisie").Range("G" & i) 'liste deroul
Sheets("BD").Range("H" & ligne_selectionnee) = Sheets("saisie").Range("H" & i) 'obs
Sheets("BD").Range("I" & ligne_selectionnee) = Sheets("saisie").Range("I" & i) 'montant
'modification BD pour les champs d'une ligne ESP en 1ere ligne (6)
ElseIf Sheets("BD").Range("A" & ligne_selectionnee) = ligne_selectionnee - 1 And Sheets("BD").Range("J" & ligne_selectionnee) = "perso" Then
Sheets("BD").Range("C" & ligne_selectionnee) = Sheets("saisie").Range("C" & i) 'date
Sheets("BD").Range("D" & ligne_selectionnee) = Sheets("saisie").Range("D" & i) 'prestataire
Sheets("BD").Range("E" & ligne_selectionnee) = Sheets("saisie").Range("E" & i) 'client
Sheets("BD").Range("F" & ligne_selectionnee) = Sheets("saisie").Range("F" & i) 'kms
Sheets("BD").Range("G" & ligne_selectionnee) = Sheets("saisie").Range("G" & i) 'liste deroul
Sheets("BD").Range("H" & ligne_selectionnee) = Sheets("saisie").Range("H" & i) 'obs
Sheets("BD").Range("I" & ligne_selectionnee) = Sheets("saisie").Range("I" & i) 'montant
End If
ligne_selectionnee = ligne_selectionnee + 1
Next i
Cà devrait aller non?
merci à tous.
fronck