superbog
XLDnaute Occasionnel
Bonjour à tous,
voilà, j'ai une macro qui fonctionne parfaitement mais quand je veux lui ajouter une double condition, elle ne prend pas en compte cette demande.
Il s'agit à partir d'une feuille contenant une liste de clients, de créer un onglet par client mais seulement si l'onglet n'existe pas déjà ET si la colonne O de la ligne considérée est vide
or quand je lance la macro, même si la cellule de la colonne O n'est pas vide, une feuille est créée.
j'ai mis en gras la ligne de double condition qui ne fonctionne pas, si quelqu'un pouvait m'aider à trouver l'erreur.
voici la macro
merci d'avance de votre attention
voilà, j'ai une macro qui fonctionne parfaitement mais quand je veux lui ajouter une double condition, elle ne prend pas en compte cette demande.
Il s'agit à partir d'une feuille contenant une liste de clients, de créer un onglet par client mais seulement si l'onglet n'existe pas déjà ET si la colonne O de la ligne considérée est vide
or quand je lance la macro, même si la cellule de la colonne O n'est pas vide, une feuille est créée.
j'ai mis en gras la ligne de double condition qui ne fonctionne pas, si quelqu'un pouvait m'aider à trouver l'erreur.
voici la macro
Code:
Sub Creer_feuilles()
'cette macro est utilisée pour créer automatiquement de nouvelles feuilles sur la base de la liste clients
Dim i, DerLigBase, lig As Integer
Dim dossier, sNomFeuille As String
Dim colFeuille As Collection
Dim rCelA As Range
Dim shAct As Worksheet
Dim FeuilleExist As Boolean
'Recherche de la dernière ligne
DerLigBase = Sheets("clients").Range("A900").End(xlUp).Row
Set colFeuille = New Collection
On Error Resume Next
'Boucle sur la plage de cellule
For Each rCelA In Sheets("clients").Range(Cells(2, 1), Cells(DerLigBase, 1))
colFeuille.Add rCelA, CStr(rCelA)
Next rCelA
'Boucle sur les éléments de la collection pour récupérer le nom des onglets
For i = 1 To colFeuille.Count
'Récupère le nom de l'onglet stocké dans la collection
sNomFeuille = colFeuille.Item(i)
'Recherche si cet onglet existe
For Each shAct In ActiveWorkbook.Worksheets
If StrComp(shAct.Name, sNomFeuille, vbTextCompare) = 0 Then
FeuilleExist = True
'Effacement des données du classeur
Sheets(sNomFeuille).Range("A2:R2").ClearContents
Exit For
End If
Next shAct
'SI ON A PAS TROUVE LA FEUILLE ET QUE LA COLONNE O EST VIDE ON LA CREEE
If IsEmpty(Sheets("clients").Cells(i, 15)) And FeuilleExist = False Then
Application.ScreenUpdating = False
'Copie le modele et on le place à la fin
Sheets("modele").Visible = True
ThisWorkbook.Worksheets("Modele").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
With ActiveSheet
.Name = sNomFeuille
End With
Sheets("modele").Visible = True
Sheets("clients").Activate
Application.ScreenUpdating = False
End If
'Rebascule le boolean pour la seconde feuille
FeuilleExist = False
Next i
'Recherche de la ligne et tri dans chaque feuille
For i = 2 To DerLigBase
dossier = Cells(i, 1).Text
lig = Sheets(dossier).Range("A2").End(xlUp).Row
'Copie
Sheets("clients").Range("A" & i & ":R" & i).Copy Destination:=Worksheets(dossier).Range("A2")
'& Lig + 1)
Next i
MsgBox "opération effectuée"
End Sub
merci d'avance de votre attention