Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour.
Cette macro te donne la dernière ligne filtrée :
Sub test1()
Dim Plage As Range, ligne As Long
Set Plage = Intersect([N:N],
[_filterdatabase]).SpecialCells(xlCellTypeVisible)
Set Plage = Plage.Areas(Plage.Areas.Count)
ligne = Plage.Rows.Count + Plage.Row - 1
If ligne > [_filterdatabase].Row Then
MsgBox ligne
Else
MsgBox "Pas de ligne filtrées"
End If
End Sub
DanielBonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour.
Cette macro te donne la dernière ligne filtrée :
Sub test1()
Dim Plage As Range, ligne As Long
Set Plage = Intersect([N:N],
[_filterdatabase]).SpecialCells(xlCellTypeVisible)
Set Plage = Plage.Areas(Plage.Areas.Count)
ligne = Plage.Rows.Count + Plage.Row - 1
If ligne > [_filterdatabase].Row Then
MsgBox ligne
Else
MsgBox "Pas de ligne filtrées"
End If
End Sub
Daniel
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour.
Cette macro te donne la dernière ligne filtrée :
Sub test1()
Dim Plage As Range, ligne As Long
Set Plage = Intersect([N:N],
[_filterdatabase]).SpecialCells(xlCellTypeVisible)
Set Plage = Plage.Areas(Plage.Areas.Count)
ligne = Plage.Rows.Count + Plage.Row - 1
If ligne > [_filterdatabase].Row Then
MsgBox ligne
Else
MsgBox "Pas de ligne filtrées"
End If
End Sub
DanielBonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon ent te de tableau la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est d clanch e par l' venement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionn sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoy e pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
viter a.
Si quelqu'un a une solution ou une id e.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xl Formulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Valid TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray5 0
Case "Supprim " '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray2 5
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucl e
If Selection.Row = Derlign Then Exit Do
Loop
'retour la position initiale
Range(Position).Select
'r activation de l'affichage
Application.ScreenUpdating = True
'r activation des v nements
Application.EnableEvents = True
End Sub
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon ent te de tableau la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est d clanch e par l' venement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionn sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoy e pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
viter a.
Si quelqu'un a une solution ou une id e.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xl Formulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Valid TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray5 0
Case "Supprim " '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray2 5
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucl e
If Selection.Row = Derlign Then Exit Do
Loop
'retour la position initiale
Range(Position).Select
'r activation de l'affichage
Application.ScreenUpdating = True
'r activation des v nements
Application.EnableEvents = True
End Sub
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon ent te de tableau la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est d clanch e par l' venement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionn sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoy e pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
viter a.
Si quelqu'un a une solution ou une id e.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*", LookIn:=xl Formulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Valid TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray5 0
Case "Supprim " '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray2 5
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucl e
If Selection.Row = Derlign Then Exit Do
Loop
'retour la position initiale
Range(Position).Select
'r activation de l'affichage
Application.ScreenUpdating = True
'r activation des v nements
Application.EnableEvents = True
End Sub
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que les
cellules des autres colonnes ne sont pas forcement remplies.
Bonjour,
Tu peux utiliser ceci pour trouver la dernière ligne de la colonne N
A )
Derlign = Worksheets("Feuil1").AutoFilter.Range.Rows.Count + 5
Ceci fonctionne SI ET SEULEMENT SI le filtre automatique a déjà
été exécuté. Cette méthode retourne la dernière ligne de la plage
sur laquelle le dernier filtre a été exécuté. Par exemple, si depuis
le dernier filtre, tu as ajouté des nouvelles lignes à ton tableau de
données, elles ne seront pas prises en compte par cette façon de faire.
B ) Quand tu utilises cette méthode, pourquoi ne pas faire la recherche
sur
la totalité de la plage :
With Worsheets("NomDeLaFeuille")
DerLig =.Range("A:AG").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
La procédure va se charger de trouver la dernière ligne peu importe
la colonne la plus longue.
"PAN GOT" a écrit dans le message de
groupe de discussion
:
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour,
Tu peux utiliser ceci pour trouver la dernière ligne de la colonne N
A )
Derlign = Worksheets("Feuil1").AutoFilter.Range.Rows.Count + 5
Ceci fonctionne SI ET SEULEMENT SI le filtre automatique a déjà
été exécuté. Cette méthode retourne la dernière ligne de la plage
sur laquelle le dernier filtre a été exécuté. Par exemple, si depuis
le dernier filtre, tu as ajouté des nouvelles lignes à ton tableau de
données, elles ne seront pas prises en compte par cette façon de faire.
B ) Quand tu utilises cette méthode, pourquoi ne pas faire la recherche
sur
la totalité de la plage :
With Worsheets("NomDeLaFeuille")
DerLig =.Range("A:AG").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
La procédure va se charger de trouver la dernière ligne peu importe
la colonne la plus longue.
"PAN GOT" <no-spam-gret.angot@wanadoo.fr> a écrit dans le message de
groupe de discussion
: ORg9mij4KHA.620@TK2MSFTNGP02.phx.gbl...
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
Bonjour,
Tu peux utiliser ceci pour trouver la dernière ligne de la colonne N
A )
Derlign = Worksheets("Feuil1").AutoFilter.Range.Rows.Count + 5
Ceci fonctionne SI ET SEULEMENT SI le filtre automatique a déjà
été exécuté. Cette méthode retourne la dernière ligne de la plage
sur laquelle le dernier filtre a été exécuté. Par exemple, si depuis
le dernier filtre, tu as ajouté des nouvelles lignes à ton tableau de
données, elles ne seront pas prises en compte par cette façon de faire.
B ) Quand tu utilises cette méthode, pourquoi ne pas faire la recherche
sur
la totalité de la plage :
With Worsheets("NomDeLaFeuille")
DerLig =.Range("A:AG").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
La procédure va se charger de trouver la dernière ligne peu importe
la colonne la plus longue.
"PAN GOT" a écrit dans le message de
groupe de discussion
:
Bonjour, bonsoir
J'ai un petit bug sur ces lignes de codes.
J'ai mon entête de tableau à la ligne 6. J'ai X lignes dans mon tableau.
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les
cellules des autres colonnes ne sont pas forcement remplies.
Cette macro est déclanchée par l'évenement "Worksheet_Calculate()".
cette macro fonctionne bien tant que je ne fait pas un filtre automatique
(positionné sur la ligne 6).
Si je fait un filtre automatique qui ne contient pas la derniere ligne du
tableau, alors la valeur renvoyée pour Derlign = 6.
Je peux mettre arbitrairement une valeur maxi mais je cherchais justement
à
éviter ça.
Si quelqu'un a une solution ou une idée.
D'avance, merci.
Patrick
Sub Prevision()
'on enregistre la position actuelle
Position = ActiveCell.Address
'gele des evenements
Application.EnableEvents = False
'gele de l'affichage
Application.ScreenUpdating = False
'initialisation des variables
Col_AA = 27
Col_AO = 41
'derniere ligne du tableau
Derlign = ActiveSheet.Range("N6:N65000").Find(What:="*",
LookIn:=xlFormulas,
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'On se positionne sur le haut de la colonne
Range("AA7").Select
Do
'deplace la selection
ActiveCell.Offset(rowOffset:=1).Activate
'definit la reference
Select Case Cells(Selection.Row, Col_AO).Value
Case "Validé TQC" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray50
Case "Supprimé" '
Cells(Selection.Row, Col_AA).Interior.Pattern = xlGray25
Case Else
Cells(Selection.Row, Col_AA).Interior.Pattern = xlSolid
End Select
'si la selection correspond au bas du tableau, sortie de la boucle
If Selection.Row = Derlign Then Exit Do
Loop
'retour à la position initiale
Range(Position).Select
'réactivation de l'affichage
Application.ScreenUpdating = True
'réactivation des événements
Application.EnableEvents = True
End Sub
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
***********************
derL = [N:N].End(xlUp).Row
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Etc
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
***********************
derL = [N:N].End(xlUp).Row
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Etc
J'ai choisi la colonne "N" pour ma recherche de derniere ligne parce que
les cellules des autres colonnes ne sont pas forcement remplies.
***********************
derL = [N:N].End(xlUp).Row
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Etc
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Je ne l'ai pas encore essayee mais pourquoi tu deconseille cette methode?
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Je ne l'ai pas encore essayee mais pourquoi tu deconseille cette methode?
PS : la méthode avec "SpecialCells(xlCellTypeLastCell)" est à déconseiller
absolument !
Je ne l'ai pas encore essayee mais pourquoi tu deconseille cette methode?