VBA - Fonction qui ne marche plus du jour au lendemain ?

PoOoOoZ

XLDnaute Nouveau
Bonjour, j'ai un problème avec une fonction qui marchait très bien depuis plusieurs années, j'ai plusieurs backup de chaque fichier en rapport avec cette fonction a plusieurs années d'intervalle, et quelque soit le backup, j'ai maintenant toujours la même erreur.
Voici la fonction :

With Workbooks("FICHIER.xlsx")
Dim LigneVide As Long
LigneVide = Columns("B").Find("*", Range("B1"), , , xlByRows, xlPrevious).Row + 1
End With

Jusqu'a hier, cette fonction fonctionnait bien (trouve la première ligne vide de la colonne "B" ?).
Je n'ai pas spécialement besoin d'une autre fonction, je peux me débrouillé pour trouver un autre système, mais c'est plus par curiosité, essayer de comprendre pourquoi maintenant "LigneVide = ligne 1", même si la colonne B est remplie de 1 à 10 par exemple.

Merci :)
 
G

Guest

Guest
Re : VBA - Fonction qui ne marche plus du jour au lendemain ?

Bonjour,

Si tu fais référence à un classeur qui n'est pas actif, et une feuille non active, il faut d'une manière ou d'une autre que VBA sache sur quelle plage de quelle feuille de quel Classeur travailler.

Code:
    With Workbooks("FICHIER.xlsx").Sheets("NomFeuille")
        Dim LigneVide As Long
        LigneVide = .Columns("B").Find("*", .Range("B1"), , , xlByRows, xlPrevious).Row + 1
    End With

Ne pas oublier les points (.) devant Columns et Range

A+
 

PoOoOoZ

XLDnaute Nouveau
Re : VBA - Fonction qui ne marche plus du jour au lendemain ?

Merci pour vos réponses si rapides !

Hasco -> Je préfère ne pas rajouter le nom de la feuille car j'en recrée une pour chaque nouveau mois, ça prend en compte la page ouverte dans le fichier en question. Quand je rajoute les points devant Range ou Columns j'ai une erreur 438 "Propriété ou méthode non gérée par cet objet". (J'ai Excel 2011 Mac pour info).

Dranred -> C'était effectivement un problème venant de la recherche ! Quand "Classeur" est sélectionné dans le formulaire de recherche, c'est la que ça bug... Que devrais-je mettre en paramètre "xlValues" & "xlWhole" ?

Merci encore.
 

gilbert_RGI

XLDnaute Barbatruc
Re : VBA - Fonction qui ne marche plus du jour au lendemain ?

Bonjour et bienvenue sur XLD

comme ceci peut-être

Sub test()
With ThisWorkbook
Dim LigneVide As Long
'LigneVide = Sheets(1).Columns("B").Find("*", Range("B1"), , , xlByRows, xlPrevious).Row + 1
LigneVide = Sheets(1).Columns("B").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row + 1
End With
MsgBox LigneVide
End Sub
 
G

Guest

Guest
Re : VBA - Fonction qui ne marche plus du jour au lendemain ?

Re,

Quand je rajoute les points devant Range ou Columns j'ai une erreur 438 "Propriété ou méthode non gérée par cet objet". (J'ai Excel 2011 Mac pour info).

Pour sûr, si tu ne spécifie pas de feuille.

Et si tu ne mets pas les . alors ta Structure With Workbooks("FICHIER.XLSX")...END WITH ne sert à rien pour la méthode FIND.

La recherche se fera sur la feuille Active du classeur Actif.

A+
 
G

Guest

Guest
Re : VBA - Fonction qui ne marche plus du jour au lendemain ?

Re,

Donc je peux retirer mes WITH sans que cela influe sur ma fonction
Si ton FIND se fait toujours sur la feuille active du classeur actif alors la réponse est OUI
A moins que tu aies d'autres actions sur le classeur concerné par le WITH...END WITH.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 683
Messages
2 090 914
Membres
104 695
dernier inscrit
akke