Ajout d'une condition SI sur macro existante
Bonjour,
Sur le fichier joint:
Actuellement: En remplissant les cases de l'onglet "Accueil" et en cliquant sur le bouton "Valider", les onglets "Référencier", "Montage", "Démontage", "Emb vides", "Opérations directes", "Via entrepot" et "Récap awb" se remplissent automatiquement.
Je souhaiterais ajouter la fonction "SI" suivante:
- Si la case D13 de l'onglet "Accueil" renseigne: "Mise en magasin" = Les onglets "Opération directes" et "Récap Awb" ne se remplissent pas
- Si la case D13 de l'onglet "Accueil" NE renseigne PAS: "Mise en magasin" c'est l'onglet "Via entrepot" qui ne se rempli pas
(code Macro du bouton "Valider" de l'onglet "Accueil" = Sub Macro 30)
Merci
Salut,
Je ne suis pas sûr d'avoir tou compris mais je tente.
J'ai compris que tu bouclais sur tes onglets et que selon le choix en D13 tu boucles sur certains onglets et pas d'autres ?
Je suis parti de ce postulat.
J'ai donc changer ton ordre d'attribution de numéro d'onglet en deb et fin de boucle.
J'ai ajouter deux variables deb et fin auxquelles je donne une valeur selon la condition si en D13.
Sub Macro30()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TOS(1 To 7) As Worksheet 'déclare le tableau de 7 variable TOS (Tableau des OngletS)
Dim PLV As Integer 'déflare la variable PLV (Première Ligne Vide)
Dim Deb As Long
Dim fin As Long
Set OS = Worksheets("Accueil") 'définit l'onglet source OS
Set TOS(1) = Worksheets("Via entrepot") 'définit l'onglet TOS(6)
Set TOS(2) = Worksheets("Référencier") 'définit l'onglet TOS(1)
Set TOS(3) = Worksheets("Montage") 'définit l'onglet TOS(2)
Set TOS(4) = Worksheets("Démontage") 'définit l'onglet TOS(3)
Set TOS(5) = Worksheets("Emb Vides") 'définit l'onglet TOS(4)
Set TOS(6) = Worksheets("recap AWB") 'définit l'onglet TOS(5)
Set TOS(7) = Worksheets("Opérations directes") 'définit l'onglet TOS(7)
Deb = IIf(OS.Range("D13").Value <> "Mise en magasin", 2, 1)
fin = IIf(OS.Range("D13").Value = "Mise en magasin", 5, 7)
For I = Deb To fin 'boucle sur 7 onglets
PLV = TOS(I).Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la première ligne vide PLV de la colonne A de l'onglet TOS(I)
TOS(I).Cells(PLV, "A") = OS.Range("B1").Value 'récupere la valeur de B1 dans la cellule ligne PLV colonne A de l'onglet TOS(I)
TOS(I).Cells(PLV, "B") = OS.Range("B3").Value
TOS(I).Cells(PLV, "C") = OS.Range("D1").Value
TOS(I).Cells(PLV, "D") = OS.Range("D3").Value
TOS(I).Cells(PLV, "E") = OS.Range("F1").Value
TOS(I).Cells(PLV, "F") = OS.Range("B5").Value
TOS(I).Cells(PLV, "G") = OS.Range("B7").Value
TOS(I).Cells(PLV, "H") = OS.Range("D5").Value
TOS(I).Cells(PLV, "I") = OS.Range("F5").Value
TOS(I).Cells(PLV, "J") = OS.Range("B9").Value
TOS(I).Cells(PLV, "K") = OS.Range("B10").Value
TOS(I).Cells(PLV, "L") = OS.Range("B11").Value
TOS(I).Cells(PLV, "M") = OS.Range("D9").Value
TOS(I).Cells(PLV, "N") = OS.Range("F9").Value
TOS(I).Cells(PLV, "O") = OS.Range("D11").Value
TOS(I).Cells(PLV, "P") = OS.Range("B15").Value
TOS(I).Cells(PLV, "Q") = OS.Range("D15").Value
TOS(I).Cells(PLV, "R") = OS.Range("D13").Value
TOS(I).Cells(PLV, "S") = OS.Range("F17").Value
TOS(I).Cells(PLV, "T") = OS.Range("C17").Value
TOS(I).Cells(PLV, "U") = OS.Range("D18").Value
TOS(I).Cells(PLV, "X") = OS.Range("D7").Value
TOS(I).Cells(PLV, "Y") = OS.Range("F7").Value
TOS(I).Cells(PLV, "Z") = OS.Range("F12").Value
With TOS(I).Rows(PLV).Font 'prend en compte la ligne DL de l'onglet TOS(I)
.Name = "Arial" 'plice
.Size = 9 'taille de la police
End With
Next I 'prochain onglet de la boucle
End SubTu me rediras.
Leakim
Merci de ton aide
C'est exactement ce que je voulais