Recherche sur les colonnes : utilisation de cells(1, i).value bugue.

Fred

XLDnaute Nouveau
Salut a tous,

Je cherche a developper une macro en VBA pour faire une recherche d'une valeur sur les colonnes. En fait, dans un fichier Excel, j'ai une case ou l'utilisateur rentre un nombre et en cliquant sur un bouton, il effectue la recherche sur la premiere ligne et toutes les colonnes dans un autre fichier xls.
Or, quand je lance ma macro, j'ai une erreur qui me dit object not found. Or, toutes les cellules du fichier qu'on ouvre pour faire la recherche sont au format general (impossible de le changer, c'est verouille). Donc j'ai mis la case ou l'utilisateur entre le texte en general aussi. Mais impossible de comparer appramment.
L'erreur se trouve au niveau de If Cells(1, i).Value = VIN Then

Merci d'avance. =)

Voici le morceau de code :
Code:
VIN = Application.Workbooks("ABC.xls").Worksheets("Navigator_Sheet").Range("H6").Value 
    
        Workbooks.Open Filename:= _
        "XYZ.xls", ReadOnly:=True 
        
    Sheets("EFG").Select
    
    'We select data in the column which matchs with the VIN CODE.
    For i = 1 To 10000
    If Cells(1, i).Value = VIN Then
    column_letter = Left$(Cells(1, i).Address(0, 0), (i < 27) + 2) 'According to the index of the column, we get its letter.

Application.Workbooks("ABC.xls").Worksheets("Navigator_Sheet").Activate
 
Dernière édition:

Fred

XLDnaute Nouveau
Re : Recherche sur les colonnes : utilisation de cells(1, i).value bugue.

Chaque jour 15 colonnes sont ajoutees et je souhaite que le systeme tienne plus de 2 ans. Donc... Mais la j'essaye de travailler avec la derniere colonne non vide. Je recupere le nom de la colonne et je parcours mon tableau jusqu'a cette colonne.
Mais sinon, tu as une idee du pourquoi ca ne marche pas ???
Merci.
 

Fred

XLDnaute Nouveau
Re : Recherche sur les colonnes : utilisation de cells(1, i).value bugue.

Salut,

J'ai reussi par un autre moyen. Je mets le code si ca peut servir :
Code:
'We search for the last cell not empty.

Set Cible = DerniereCellule(ActiveSheet)
    
    If Not Cible Is Nothing Then
    C = NomCol(Cible.Column)
    Else
    MsgBox "La feuille est vide."
    End If

VIN = Application.Workbooks("***.xls").Worksheets("Navigator_Sheet").Range("H6").Value ' We get the value of the VIN code.
Set cell_searched = Range("G1:" & C & "1").Find(VIN)

If Not cell_searched Is Nothing Then
'Write your code.
Else
MsgBox "VIN code not found"
end if

Les fonctions sont :
Code:
Function DerniereCellule(Ws As Worksheet) As Range
'We search for the last cell of the activesheet.

    Dim NumLigne As Double, NumCol As Integer
    
    'Vérification si la feuille est totalement vide
    If Ws.UsedRange.Cells.Address = "$A$1" And _
        IsEmpty(Ws.Range("A1")) Then Exit Function
    
    With Ws
        'Identifie le numéro de ligne
        NumLigne = .Cells.Find("*", .Range("A1"), , , xlByRows, xlPrevious).Row
        'Identfie le numéro de colonne
        NumCol = .Cells.Find("*", .Range("A1"), , , xlByColumns, xlPrevious).Column
        
        Set DerniereCellule = .Cells(NumLigne, NumCol)
    End With
End Function

Et :
Code:
Function NomCol(Col As Long) As String
' This macro allows us to get the name of the column and not its index.
    If Col < 27 Then
        NomCol = Chr(Col + 64)
    Else
        NomCol = Chr(Int((Col - 0.1) / 26) + 64) & Chr(IIf((Col Mod 26) = 0, 26, (Col Mod 26)) + 64)
    End If
End Function
 

Statistiques des forums

Discussions
312 310
Messages
2 087 117
Membres
103 477
dernier inscrit
emerica