Bonjour le forum,
Mon double problème du jour, dont j'ai régler le premier, est le suivant :
* J'ai deux classeurs contenant plus de 600 feuilles.
* Dans les deux classeurs, la première feuille contient des lignes de données (+ de 12000) et l'ensemble de ces données a été copié dans les feuilles suivantes.
* Dans les deux classeurs, cette première feuille contient une colonne B contenant une codification RxCy où x et y vont de 1 à 9 (R1C1, R1C2, R3..., R9C1..., R2C1, R2C2, R2C3..., R2C9...,
Dans les deux classeurs la première feuille ne doit subir aucune modification.
PREMIERE PROBLEMATIQUE RESOLUE :
Dans le premier classeur, les feuilles se nomment R1, R2, R3, R4, ..., R12, R13..., R25..., R567..., R4579...
Ici on ne se préoccupe pas de la valeur y de la codification RxCy de la colonne B.
L'objectif est de supprimer dans toutes les feuilles, autres que la première, les lignes dont la valeur x n'est pas contenue dans le nom de la feuille.
Et donc dans la feuille R1 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type R1Cy, dans la feuille R134 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type R1Cy, ou R3Cy, ou R4Cy...
La macro suivante exécute parfaitement cette manip. :
Sub Occurences()
Application.ScreenUpdating = False
'
For f = 2 To Sheets.Count - 1
Sheets(f).Select
For i = Range("B1").End(xlDown).Row To 1 Step -1
agarder = False
For n = 1 To Len(ActiveSheet.Name) - 1
If "R" & Mid(ActiveSheet.Name, n + 1, 1) = Left(Cells(i, 2), 2) Then
agarder = True
End If
Next
If agarder = False Then
Rows(i).Delete
End If
Next
Next
'
Sheets(1).Select
Application.ScreenUpdating = True
MsgBox "OK"
'
End Sub
DEUXIEME PROBLEMATIQUE NON RESOLUE :
Dans le second classeur, les feuilles se nomment C1, C2, C3, C4, ..., C12, C13..., C25..., C567..., C4579...
Ici on ne se préoccupe pas de la valeur x de la codification RxCy de la colonne B.
L'objectif est de supprimer dans toutes les feuilles, autres que la première, les lignes dont la valeur y n'est pas contenue dans le nom de la feuille.
Et donc dans la feuille C1 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type RxC1, dans la feuille R134 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type RxC1, ou RxC3, ou RxC4...
Et là, la codification utilisée ne fonctionne pas et je n'arrive pas à trouver d'où cela vient :
Sub Occurences()
Application.ScreenUpdating = False
For i = Range("B1").End(xlDown).Row To 1 Step -1
agarder = False
For n = 1 To Len(ActiveSheet.Name) - 1
If "C" & Mid(ActiveSheet.Name, n + 1, 1) = Right(Cells(i, 2), 2) Then
agarder = True
End If
Next
If agarder = False Then
Rows(i).Delete
End If
Next
Sheets(1).Select
Application.ScreenUpdating = True
MsgBox "OK"
'
End Sub
Qui pourrait me dire où cela pêche ???
Merci de votre aide et de votre explication sur la modification proposée.
Mon double problème du jour, dont j'ai régler le premier, est le suivant :
* J'ai deux classeurs contenant plus de 600 feuilles.
* Dans les deux classeurs, la première feuille contient des lignes de données (+ de 12000) et l'ensemble de ces données a été copié dans les feuilles suivantes.
* Dans les deux classeurs, cette première feuille contient une colonne B contenant une codification RxCy où x et y vont de 1 à 9 (R1C1, R1C2, R3..., R9C1..., R2C1, R2C2, R2C3..., R2C9...,
Dans les deux classeurs la première feuille ne doit subir aucune modification.
PREMIERE PROBLEMATIQUE RESOLUE :
Dans le premier classeur, les feuilles se nomment R1, R2, R3, R4, ..., R12, R13..., R25..., R567..., R4579...
Ici on ne se préoccupe pas de la valeur y de la codification RxCy de la colonne B.
L'objectif est de supprimer dans toutes les feuilles, autres que la première, les lignes dont la valeur x n'est pas contenue dans le nom de la feuille.
Et donc dans la feuille R1 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type R1Cy, dans la feuille R134 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type R1Cy, ou R3Cy, ou R4Cy...
La macro suivante exécute parfaitement cette manip. :
Sub Occurences()
Application.ScreenUpdating = False
'
For f = 2 To Sheets.Count - 1
Sheets(f).Select
For i = Range("B1").End(xlDown).Row To 1 Step -1
agarder = False
For n = 1 To Len(ActiveSheet.Name) - 1
If "R" & Mid(ActiveSheet.Name, n + 1, 1) = Left(Cells(i, 2), 2) Then
agarder = True
End If
Next
If agarder = False Then
Rows(i).Delete
End If
Next
Next
'
Sheets(1).Select
Application.ScreenUpdating = True
MsgBox "OK"
'
End Sub
DEUXIEME PROBLEMATIQUE NON RESOLUE :
Dans le second classeur, les feuilles se nomment C1, C2, C3, C4, ..., C12, C13..., C25..., C567..., C4579...
Ici on ne se préoccupe pas de la valeur x de la codification RxCy de la colonne B.
L'objectif est de supprimer dans toutes les feuilles, autres que la première, les lignes dont la valeur y n'est pas contenue dans le nom de la feuille.
Et donc dans la feuille C1 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type RxC1, dans la feuille R134 ne doivent se retrouver que les lignes dont la colonne B contient une codification de type RxC1, ou RxC3, ou RxC4...
Et là, la codification utilisée ne fonctionne pas et je n'arrive pas à trouver d'où cela vient :
Sub Occurences()
Application.ScreenUpdating = False
For i = Range("B1").End(xlDown).Row To 1 Step -1
agarder = False
For n = 1 To Len(ActiveSheet.Name) - 1
If "C" & Mid(ActiveSheet.Name, n + 1, 1) = Right(Cells(i, 2), 2) Then
agarder = True
End If
Next
If agarder = False Then
Rows(i).Delete
End If
Next
Sheets(1).Select
Application.ScreenUpdating = True
MsgBox "OK"
'
End Sub
Qui pourrait me dire où cela pêche ???
Merci de votre aide et de votre explication sur la modification proposée.