Accélérer l'exécution d'un code VBA
Au temps pour moi Dan, j'ai réfléchi et compris votre code
Je laisse le code final si ça peut servir à quelqu'un, merci infiniment pour votre aide
Private Sub ValiderBDD_Click()
'Copie cases dans la BDD
Dim i As Byte
Dim ligne As Integer
Dim Annee As Range, Plage As Range, Semaine As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'debut ajout
Set Plage = Range("B15:F19")
Set Semaine = Range("C11")
Set Annee = Range("E11")
Set typ = Range("C2")
'TEST SI PLAGE VIDE
If Application.CountA(Plage) = 0 Or Application.CountA(Semaine) = 0 Or Application.CountA(Annee) = 0 Or Application.CountA(ope) = 0 Or Application.CountA(typ) = 0 Then
MsgBox ("Veuillez renseigner au moins une OF, date, année, opérateur, type et semaine")
Else:
For Each C In Worksheets("Interface").Range("B15:F19").Cells
If Not IsEmpty(C.Value) Then 'Si Numéro d'OF non vide alors
For i = 3 To 5
ligne = Sheets("BDD").Range("A" & Sheets("BDD").Rows.Count).End(xlUp).Row + 1
If Not IsEmpty(Cells(23, i)) Then
With Worksheets("BDD")
.Range("A" & ligne) = Annee
.Range("B" & ligne) = Semaine
.Range("C" & ligne) = C.Value
Worksheets("Interface").Range(Cells(23, i), Cells(29, i)).Copy 'ajoute une ligne en plus
.Range("D" & ligne).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End With
End If
Next i
End If
Next C
MsgBox ("Données ajoutés avec succès")
End If 'ajout
'--------AMELIIORATION FIN
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End SubRe
Désolé j'ai du m'absenter. Mais je réponds tout de même à vos questions
il me manque juste deux données à rajouter à la base de données et la vérif que aucune case en jaune ne soit pas vide avant exécution
Désolé je n'avais pas vu la colonne J à compléter dans la feuille BDD. Donc c'est normal. Mais vous avez bien corrigé en changeant cells(28,i) par Cells(29, i)
Pour la vérification de vide, c'est ok je saurais faire, par contre pour rajouter les 2 champs supplémentaires dans la BDD j'ai une idée, suffirait-il de changer le i à 7 ?
Non surtout pas la définition de i = 3 to 5 correspond aux colonnes C à E dans la ligne 23. Donc logique que cela mettre le souc dans BDD
Cordialement
Pas de soucis, au contraire merci pour votre temps ! :)