Exporter resultats pour calcul %
Bonjour,
Si l'application est lancée depuis la feuille ADMINISTRATEUR, alors il faut lui préciser d'aller chercher la dernière ligne dans la feuille DATA, sinon il cherche la dernière ligne de la feuille ADMINISTRATEUR
DerLig_Data = Sheets("DATA").Range("D" & Rows.Count).End(xlUp).Row 'détermine la dernière ligne
If DerLig_Data > 8 Then Sheets("DATA").Range("D9:E" & DerLig_Data).ClearContents 'si la dernière ligne est la 8, on fait rien sinon, on efface tout ce qui est en dessousCdlt
Bonjour le forum
Re Arthuro83
Voici le code modifié suivant des recommandations.
J'ai mis suite à ta remarque
Si l'application est lancée depuis la feuille ADMINISTRATEUR, alors il faut lui préciser d'aller chercher la dernière ligne dans la feuille DATA, sinon il cherche la dernière ligne de la feuille ADMINISTRATEUR
cette ligne supplémentaire
Worksheets("DATA").Activate 'Activation Feuille "DATA"Donc le code final qui fonctionne est:
'PROCEDURE METTRE "PE" DANS COLONNE D A PARTIR DE LA LIGNE 3 SI CELLULE B N'EST PAS VIDE sur toutes les feuilles
Private Sub Btn_InitDossier_Click()
Dim plage As Range
Dim i%, Y%
Dim DerLig As Long
Dim Data As Long
Application.ScreenUpdating = False 'Désactive l'actualisation de l'écran
Unload UserForm2 'fermeture userform
For i = 3 To Worksheets.Count
With Worksheets(i)
For Y = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Y, 3)) Then
.Range(.Cells(Y, 4), .Cells(Y, 10)).ClearContents 'Raz des informations précédentes
.Cells(Y, 4) = "PE" 'Ecriture pas essayer "PE"
.Columns("G:I").EntireColumn.Hidden = True ' Choix des colonnes a masquer pour saisir les informations: Columns("G:I") étant la phase corrective sur "N"
End If
Next Y
End With
Next i
Worksheets("DATA").Activate 'Activation Feuille "DATA"
DerLig_Data = Sheets("DATA").Range("D" & Rows.Count).End(xlUp).Row 'détermine la dernière ligne
If DerLig_Data > 8 Then Sheets("DATA").Range("D9:E" & DerLig_Data).ClearContents 'si la dernière ligne est la 8, on fait rien sinon, on efface tout ce qui est en dessous
For i = 1 To Sheets.Count
If Sheets(i).Name <> "DATA" And Sheets(i).Name <> "ADMINISTRATEUR" Then 'toutes les feuilles sauf "DATA" et "ADMINISTRATEUR"
PosTiret = InStr(1, Sheets(i).Name, "-", 1) 'relevé de l'emplacement du tiret dans le nom de l'onglet
Tbl = Left(Sheets(i).Name, PosTiret - 1)
With Sheets("DATA") 'Choix de la l'onglet "DATA"
.Cells(9 + i - 3, "D") = Sheets(i).Name 'Nom de l'onglet
.Range("E" & 9 + i - 3) = "=COUNTIF(" & Tbl & "[CONFORME O / N / PE],""PE"")"
End With
End If
Next i
DerLig_Data = Worksheets("DATA").Range("D" & Rows.Count).End(xlUp).Row 'détermine la dernière ligne
If DerLig_Data > 8 Then Sheets("DATA").Range("D9:E" & DerLig_Data).Value = Range("D9:E" & DerLig_Data).Value 'remplacement des formules par leurs valeurs
MsgBox "Toutes les feuilles sont mises à jour", vbInformation
Application.ScreenUpdating = True 'Résactive l'actualisation de l'écran
Worksheets("DATA").Visible = False 'Activation Feuille "DATA"
End SubQuand penses-tu ?
Merci
Bonne fin de journée
Si ça marche, c'est bon.
Pour info, la ligne suivante en fin de macro:
Application.ScreenUpdating = True 'Résactive l'actualisation de l'écranne sert à rien, en effet, dès que la macro a fini, l'écran est réactualisé.
Cdlt
Re le forum
Re Arthuro83
Merci pour ton aide sur ce post.
L'aide que j'ai eu grâce à ce site et et toi en particulier, mon permis d'avancer et de me former par la même occasion.
Je (vous) te souhaite bonne fin de journée
Ledzep