Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Methode find

KTM

XLDnaute Impliqué
Salut chers tous
Dans le fichier que je joint
J'aimerais par macro sélectionner la plage "A1","B"& lig
La colonne A contient une formule.
lig est le numero de la derniere ligne de la colonne A dont la valeur est differente de zero.
J'ai fai le code qui suit mais il ne fonctionne pas comme j'ai expliqué . Quelque chose ne va pas pas dans mon code. Comment corriger ?

Sub test()
Dim lig As Integer
lig = Range("A1", Range("A1").End(xlDown)).Find(0, Lookat:=xlPart).Row - 1
Range("A1", "B" & lig).Select
End Sub
 

Pièces jointes

  • A_test.xlsm
    18.6 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonsoir KTM,
Code:
Sub test()
With [A1].CurrentRegion
    .Resize(Evaluate("MAX(IF(" & .Columns(1).Address & "<>0,ROW(" & .Columns(1).Address & ")))")).Select
End With
End Sub
VBA sait que la formule évaluée est matricielle...

A+
 

eriiic

XLDnaute Barbatruc
Bonjour,

quand tu travailles avec range.Find toujours l'affecter à une variable range avant.
Ca te permet de tester qu'il a bien trouvé. Sinon si tu fais un .Row sur Nothing, erreur assurée.
J'ai laissé .Select mais c'est à faire que quand on n'a pas lechoix.
VB:
    Dim lig As Long, c As Range
    Set c = Range("A1", Range("A1").End(xlDown)).Find(0, Lookat:=xlPart)
    If Not c Is Nothing Then
        ' soit
        lig = c.Row
        Range("A1", "B" & lig).Select
        ' ou :
        [A1:B1].Resize(c.Row).Select
    Else
        'non trouvé
    End If
eric
 

KTM

XLDnaute Impliqué
Merci a vous deux .j'ai testé les deux solutions.
Seule celle de Job75 passe mais je voudrais que la sélection concerne les colonnes A et B uniquement
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour KTM, eriiiic, le forum,

Puisque vous voulez du Find :
Code:
Sub test()
Dim f, c As Range
With [A1].CurrentRegion.Columns(1)
    f = .Formula
    .Value = .Value
    .Replace 0, "", xlWhole
    Set c = .Find("*", , xlValues, xlWhole, , xlPrevious)
    .Formula = f
    If c Is Nothing Then MsgBox "Sélection impossible" Else .Resize(c.Row, 2).Select
End With
End Sub
A+
 

Discussions similaires

Réponses
25
Affichages
879
Réponses
6
Affichages
146
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…