Bonjour,
j'ai deux demandes un peu similaire, donc je vais faire la plus complexe, et
l'autre j'essaierais d'adapter :
j'ai un onglet qui comporte plusieurs tableaux simples :
colonnes de A à J, cellules C à F fusionnées, sans aucune formules, et une
ligne total en dessous (pour les colonnes G et H)
Je voudrais dans ces tableaux, qu'une ligne s'insère automatiquement, avec
la meme mise en forme, afin, qu'il existe toujours une ligne vide dans chacun
des tableaux, avec un minimum de 3 lignes tout de même.
il faut peut être nommé les tableaux.
Voilà, je met le lien de mon onglet si ça peut aider.
Yann
Re, donc vraiment bien ta macro nettoyage. par contre, comment puis-je indiquer que cette macro est valable uniquement pour 2 onglets "60_21" et "90_13" ?? (j'ai essayé un truc,mais pas sur) MERCI ----- 'nettoyage des feuilles à tableaux 60.21 et 90.31 Sub Nettoyage() sheets("60_21", "90_13") 'ça j'ai essayé, mais je suis pas sur .. i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End Sub ------
Re,
donc vraiment bien ta macro nettoyage.
par contre, comment puis-je indiquer que cette macro est valable uniquement
pour 2 onglets "60_21" et "90_13" ?? (j'ai essayé un truc,mais pas sur)
MERCI
-----
'nettoyage des feuilles à tableaux 60.21 et 90.31
Sub Nettoyage()
sheets("60_21", "90_13") 'ça j'ai essayé, mais je suis pas sur ..
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
End Sub
------
Re, donc vraiment bien ta macro nettoyage. par contre, comment puis-je indiquer que cette macro est valable uniquement pour 2 onglets "60_21" et "90_13" ?? (j'ai essayé un truc,mais pas sur) MERCI ----- 'nettoyage des feuilles à tableaux 60.21 et 90.31 Sub Nettoyage() sheets("60_21", "90_13") 'ça j'ai essayé, mais je suis pas sur .. i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End Sub ------
FFO
Rebonjour à toi
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Fais des essais et dis moi !!!!
Rebonjour à toi
Heureux que celà te convienne
Cette macro fonctionne sur la feuille active
Tu peux donc cibler manuellement la feuille à traiter
Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux
pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count
If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then
Sheest(j).Activate
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
End If
Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni
pour fonctionner correctement
Il est donc important d'avoir ce format de lignes pour tous les Onglets à
traiter
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Fais des essais et dis moi !!!!
Sunburn
Ok, bon ça va être impecable. oui, pas de soucis,la couleur est la même.
Par contre, pour le code qui est sur la feuille (pour l'ajout des lignes), en fait, sur mon classeur, les feuilles sont verouillées. donc je suppose qui faut déprotéger au début et protéger à la fin de la macro ? de quel type ? worksheet.protect et worksheet .unprotect ?? MERCI. Yann
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Fais des essais et dis moi !!!!
Ok, bon ça va être impecable.
oui, pas de soucis,la couleur est la même.
Par contre, pour le code qui est sur la feuille (pour l'ajout des lignes),
en fait, sur mon classeur, les feuilles sont verouillées.
donc je suppose qui faut déprotéger au début et protéger à la fin de la
macro ?
de quel type ?
worksheet.protect
et worksheet .unprotect
??
MERCI. Yann
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne
Cette macro fonctionne sur la feuille active
Tu peux donc cibler manuellement la feuille à traiter
Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux
pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count
If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then
Sheest(j).Activate
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
End If
Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni
pour fonctionner correctement
Il est donc important d'avoir ce format de lignes pour tous les Onglets à
traiter
Ok, bon ça va être impecable. oui, pas de soucis,la couleur est la même.
Par contre, pour le code qui est sur la feuille (pour l'ajout des lignes), en fait, sur mon classeur, les feuilles sont verouillées. donc je suppose qui faut déprotéger au début et protéger à la fin de la macro ? de quel type ? worksheet.protect et worksheet .unprotect ?? MERCI. Yann
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Fais des essais et dis moi !!!!
Sunburn
re, ne tiens pas compte de mon dernier post, pas de soucis, c'est OK. c'est juste que j'avais supprimer mes cellules fusionnées, mais le temps que je réfléchisse......... :°) YANN
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Fais des essais et dis moi !!!!
re,
ne tiens pas compte de mon dernier post, pas de soucis, c'est OK.
c'est juste que j'avais supprimer mes cellules fusionnées, mais le temps que
je réfléchisse.........
:°)
YANN
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne
Cette macro fonctionne sur la feuille active
Tu peux donc cibler manuellement la feuille à traiter
Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux
pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count
If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then
Sheest(j).Activate
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
End If
Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni
pour fonctionner correctement
Il est donc important d'avoir ce format de lignes pour tous les Onglets à
traiter
re, ne tiens pas compte de mon dernier post, pas de soucis, c'est OK. c'est juste que j'avais supprimer mes cellules fusionnées, mais le temps que je réfléchisse......... :°) YANN
"FFO" a écrit :
Rebonjour à toi
Heureux que celà te convienne Cette macro fonctionne sur la feuille active Tu peux donc cibler manuellement la feuille à traiter Si tu veux traiter plusieurs feuilles en même temps automatiquement tu peux pour tes Onglets cités rajouter ces lignes :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate End If Next
Attention ce code se repère sur la couleur des lignes que tu m'as fourni pour fonctionner correctement Il est donc important d'avoir ce format de lignes pour tous les Onglets à traiter
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe") ActiveSheet.Protect ("Mot de passe")
au bon endroit Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate ActiveSheet.Unprotect ("Mot de passe") i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate ActiveSheet.Protect ("Mot de passe") End If Next
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe")
ActiveSheet.Protect ("Mot de passe")
au bon endroit
Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count
If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then
Sheest(j).Activate
ActiveSheet.Unprotect ("Mot de passe")
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
ActiveSheet.Protect ("Mot de passe")
End If
Next
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe") ActiveSheet.Protect ("Mot de passe")
au bon endroit Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate ActiveSheet.Unprotect ("Mot de passe") i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate ActiveSheet.Protect ("Mot de passe") End If Next
J'espère avoir répondu à tes attentes Dis moi !!!
Sunburn
Re, tout a fait, mes attentes et mes espérances sont comblées. merci encore. YANN
"FFO" a écrit :
J'espère avoir répondu à tes attentes Dis moi !!!
Re,
tout a fait, mes attentes et mes espérances sont comblées.
merci encore.
YANN
Re, tout a fait, mes attentes et mes espérances sont comblées. merci encore. YANN
"FFO" a écrit :
J'espère avoir répondu à tes attentes Dis moi !!!
Sunburn
re, au fait, comment faire pour que une fois exécutée, la cellule qui copie le format ne clignotte plus ??? un 'Application.CutCopyMode = False peut suffire ? Merci. YANN
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe") ActiveSheet.Protect ("Mot de passe")
au bon endroit Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate ActiveSheet.Unprotect ("Mot de passe") i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate ActiveSheet.Protect ("Mot de passe") End If Next
J'espère avoir répondu à tes attentes Dis moi !!!
re,
au fait, comment faire pour que une fois exécutée, la cellule qui copie le
format ne clignotte plus ???
un 'Application.CutCopyMode = False peut suffire ?
Merci.
YANN
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe")
ActiveSheet.Protect ("Mot de passe")
au bon endroit
Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count
If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then
Sheest(j).Activate
ActiveSheet.Unprotect ("Mot de passe")
i = 0
Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row
If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then
n = n + 1
End If
If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then
n = 0
End If
If n > 3 Then
Range("A9").Offset(i, 0).EntireRow.Select
Selection.Delete
i = i - 1
End If
i = i + 1
Loop
Range("A1").Activate
ActiveSheet.Protect ("Mot de passe")
End If
Next
re, au fait, comment faire pour que une fois exécutée, la cellule qui copie le format ne clignotte plus ??? un 'Application.CutCopyMode = False peut suffire ? Merci. YANN
Soit tu le remplaces soit tu rajoutes les 2 lignes :
ActiveSheet.Unprotect ("Mot de passe") ActiveSheet.Protect ("Mot de passe")
au bon endroit Le Mot de passe n'est pas obligatoire
Il faudra rajouter ces 2 lignes pour la Macro "Nettoyage" ainsi :
For j = 1 to Sheets.Count If Sheets(j).Name = "60_21" or Sheets(j).Name = "90_13" then Sheest(j).Activate ActiveSheet.Unprotect ("Mot de passe") i = 0 Do While Range("A9").Offset(i, 0).Row < Range("D65535").End(xlUp).Row If Range("A9").Offset(i, 0).Interior.ColorIndex = 36 Then n = n + 1 End If If Range("A9").Offset(i, 0).Interior.ColorIndex <> 36 Then n = 0 End If If n > 3 Then Range("A9").Offset(i, 0).EntireRow.Select Selection.Delete i = i - 1 End If i = i + 1 Loop Range("A1").Activate ActiveSheet.Protect ("Mot de passe") End If Next
J'espère avoir répondu à tes attentes Dis moi !!!
FFO
Rebonjour à toi
Tu peux effectivement mettre cette ligne de code en fin Celà devrait convenir
Au plaisir
Rebonjour à toi
Tu peux effectivement mettre cette ligne de code en fin
Celà devrait convenir