Sub Transfert()
Dim S As Object 'déclare la variabe S (onglet saisie PP)
Dim B As Object 'déclare la variable B (onglet base PP)
Dim BE As String 'déclare la variable BE (Boîte d'Entrée)
Dim TB() As String 'déclare la tableau TB (TaBleau)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim NB As Byte 'déclare la variable NB (NomBre)
Set S = Sheets("saisie PP") 'définit l'onglet S
Set B = Sheets("base PP") 'définit l'onglet B
BE = InputBox("Mot de Passe :") 'définit la boîte d'entrée
If BE = "pvi" Then 'condition 1 : si la boîte d'entrée est "pvi"
MsgBox "Transfert des données" 'message (j'aurais plustôt mis le message à la fin...)
If S.Range("D14") <> "" Then NB = S.Range("D14").CurrentRegion.Cells.Count 'si D14 n'est pas vide, définit dans NB le nombre de données correspondantes
For I = 1 To NB 'Boucle 1 : sur le nombre de moyens éditées pour l'objectif 1
ReDim Preserve TB(3, x) 'redimensionne le tableau TB
TB(0, x) = S.Range("D10").Value 'récupère la référence PP
TB(1, x) = S.Range("D3").Value 'récupère le nom
TB(2, x) = S.Range("B14").Value 'récupère l'objectif
TB(3, x) = S.Range("D14").Offset(y, 0) 'récupère le moyen
x = x + 1: y = y + 1 'incrémente les variables x et y
Next I 'prochain moyen de la boucle 1
y = 0 'réinitialise la variable y
If S.Range("D18") <> "" Then NB = S.Range("D18").CurrentRegion.Cells.Count 'si D18 n'est pas vide, définit dans NB le nombre de données correspondantes
For I = 1 To NB 'Boucle 2 : sur le nombre de moyens éditées pour l'objectif 2
ReDim Preserve TB(3, x) 'redimensionne le tableau TB
TB(0, x) = S.Range("D10").Value 'récupère la référence PP
TB(1, x) = S.Range("D3").Value 'récupère le nom
TB(2, x) = S.Range("B18").Value 'récupère l'objectif
TB(3, x) = S.Range("D18").Offset(y, 0) 'récupère le moyen
x = x + 1: y = y + 1 'incrémente les variables x et y
Next I 'prochain moyen de la boucle 2
y = 0 'réinitialise la variable y
If S.Range("D22") <> "" Then NB = S.Range("D22").CurrentRegion.Cells.Count 'si D22 n'est pas vide, définit dans NB le nombre de données correspondantes
For I = 1 To NB 'Boucle 3 : sur le nombre de moyens éditées pour l'objectif 3
ReDim Preserve TB(3, x) 'redimensionne le tableau TB
TB(0, x) = S.Range("D10").Value 'récupère la référence PP
TB(1, x) = S.Range("D3").Value 'récupère le nom
TB(2, x) = S.Range("B22").Value 'récupère l'objectif
TB(3, x) = S.Range("D22").Offset(y, 0) 'récupère le moyen
x = x + 1: y = y + 1 'incrémente les variables x et y
Next I 'prochain moyen de la boucle 3
For I = 0 To x - 1 'boucle 4 : sur toutes les variables tu tableau TB
Set dest = B.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
dest.Value = TB(0, I) 'place la référence PP
dest.Offset(0, 1).Value = TB(1, I) 'place le nom
dest.Offset(0, 2).Value = TB(2, I) 'place l'objectif
dest.Offset(0, 3).Value = TB(3, I) 'place le moyen
Next I 'prochaine variable de la boucle 4
'MsgBox "Les données ont été tranférées !"'c'est ici que j'aurais mis le message
Else 'sinon (condition 1)
MsgBox "mot de passe incorrect" 'message
End If 'fin de la condition 1
End Sub