Bonsoir,
Aucune reponse,ai-je omis un code de conduite sur le forum,je ne sais point.
Mais une réponse,m'aurait permis d'avancer.
Voici ma question:
Je viens de créer,une macro qui efface les cellules bleues après la création de la feuille modèle avec un bouton.Je l'ai ajouté à la fin du code suivant;pour quelle s'exécute en automatique;mais cela ne le fait pas.
Pourriez-vous,m'aider à le mettre en place.Ci-joint le code de la macro"effacebleues" à la fin du code.
Merci à tous.laplayast@+
Option Explicit
Sub affiche1()
UserForm1.Show
End Sub
Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
Dim nu() As String
Sheets("modéle").Select
With Sheets("modéle")
If .Range("D14").Value = "" Then
Call MsgBox("Vous dever indiquer le LOT ", vbInformation, Application.Name)
.Range("D14").Select
Exit Sub
End If
If .Range("H14").Value = "" Then
Call MsgBox("Vous devez indiquez le N° de PV", vbInformation, Application.Name)
.Range("H14").Select
Exit Sub
End If
If .Range("C28").Value = "" Then
Call MsgBox("Vous devez indiquez L'EPAISSEUR", vbInformation, Application.Name)
.Range("C28").Select
Exit Sub
End If
If .Range("H28").Value = "" Then
Call MsgBox("Vous devez indiquez LA FORCE", vbInformation, Application.Name)
.Range("H28").Select
Exit Sub
End If
End With
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
If j > i Then i = j
End If
End If
Next Sh
With Sheets("modéle")
.Copy after:=Sheets(Sheets.Count)
' On Error GoTo PbNomFeuille
ActiveSheet.Name = "modéle" & i + 1 '' référence"
End With
'
' on met les noms dans un tableau
ReDim nu(Sheets.Count)
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
nu(j) = Sh.Name
End If
End If
Next Sh
' on recopie les données de l'avant dernier dans le dernier
For j = UBound(nu) To LBound(nu) Step -1
If nu(j) <> "" Then
i = 1
If j > 1 Then
Do
If nu(j - i) <> "" Then Exit Do
i = i + 1
If i > Sheets.Count Then Exit Do ' sortie si problème
Loop
i = j - i
Call recopie(nu(i), nu(j))
Else
Call recopie("modéle", nu(j))
End If
End If
Next j
End Sub
Private Sub recopie(nomforig As String, nomfdest As String)
Dim £j As Integer
With Sheets(nomfdest)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
For £j = 28 To 34
.Range("C" & £j).Value = Sheets(nomforig).Range("h" & £j).Value
.Range("D" & £j).Value = Sheets(nomforig).Range("i" & £j).Value
Next £j
' compléter pour les cellules roses
.Range("C11").Value = Sheets(nomforig).Range("C11").Value
If .Range("k14").Value = "" Then .Range("D14").Value = Sheets(nomforig).Range("D14").Value
If .Range("l14").Value = "" Then .Range("H14").Value = Sheets(nomforig).Range("H14").Value
.Range("I11").Value = Sheets(nomforig).Range("I11").Value
.Range("H36").Value = Sheets(nomforig).Range("D36").Value
End With
End Sub
Sub effacebleues()
'
' effacebleues Macro
' Macro enregistrée le 06/04/2009 par toto
'
'
Range("H28:I32,H25").Select
Range("H25").Activate
Selection.ClearContents
End Sub
Aucune reponse,ai-je omis un code de conduite sur le forum,je ne sais point.
Mais une réponse,m'aurait permis d'avancer.
Voici ma question:
Je viens de créer,une macro qui efface les cellules bleues après la création de la feuille modèle avec un bouton.Je l'ai ajouté à la fin du code suivant;pour quelle s'exécute en automatique;mais cela ne le fait pas.
Pourriez-vous,m'aider à le mettre en place.Ci-joint le code de la macro"effacebleues" à la fin du code.
Merci à tous.laplayast@+
Option Explicit
Sub affiche1()
UserForm1.Show
End Sub
Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
Dim nu() As String
Sheets("modéle").Select
With Sheets("modéle")
If .Range("D14").Value = "" Then
Call MsgBox("Vous dever indiquer le LOT ", vbInformation, Application.Name)
.Range("D14").Select
Exit Sub
End If
If .Range("H14").Value = "" Then
Call MsgBox("Vous devez indiquez le N° de PV", vbInformation, Application.Name)
.Range("H14").Select
Exit Sub
End If
If .Range("C28").Value = "" Then
Call MsgBox("Vous devez indiquez L'EPAISSEUR", vbInformation, Application.Name)
.Range("C28").Select
Exit Sub
End If
If .Range("H28").Value = "" Then
Call MsgBox("Vous devez indiquez LA FORCE", vbInformation, Application.Name)
.Range("H28").Select
Exit Sub
End If
End With
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
If j > i Then i = j
End If
End If
Next Sh
With Sheets("modéle")
.Copy after:=Sheets(Sheets.Count)
' On Error GoTo PbNomFeuille
ActiveSheet.Name = "modéle" & i + 1 '' référence"
End With
'
' on met les noms dans un tableau
ReDim nu(Sheets.Count)
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
nu(j) = Sh.Name
End If
End If
Next Sh
' on recopie les données de l'avant dernier dans le dernier
For j = UBound(nu) To LBound(nu) Step -1
If nu(j) <> "" Then
i = 1
If j > 1 Then
Do
If nu(j - i) <> "" Then Exit Do
i = i + 1
If i > Sheets.Count Then Exit Do ' sortie si problème
Loop
i = j - i
Call recopie(nu(i), nu(j))
Else
Call recopie("modéle", nu(j))
End If
End If
Next j
End Sub
Private Sub recopie(nomforig As String, nomfdest As String)
Dim £j As Integer
With Sheets(nomfdest)
'copier les cellules"H28 à H34 et I28 à I34,de la feuille modèle _
vers la feuille modèle1, vers les cellules "C28 à D34
For £j = 28 To 34
.Range("C" & £j).Value = Sheets(nomforig).Range("h" & £j).Value
.Range("D" & £j).Value = Sheets(nomforig).Range("i" & £j).Value
Next £j
' compléter pour les cellules roses
.Range("C11").Value = Sheets(nomforig).Range("C11").Value
If .Range("k14").Value = "" Then .Range("D14").Value = Sheets(nomforig).Range("D14").Value
If .Range("l14").Value = "" Then .Range("H14").Value = Sheets(nomforig).Range("H14").Value
.Range("I11").Value = Sheets(nomforig).Range("I11").Value
.Range("H36").Value = Sheets(nomforig).Range("D36").Value
End With
End Sub
Sub effacebleues()
'
' effacebleues Macro
' Macro enregistrée le 06/04/2009 par toto
'
'
Range("H28:I32,H25").Select
Range("H25").Activate
Selection.ClearContents
End Sub