bug de macro. La solution svp

Delors

XLDnaute Nouveau
Lorsque je fais ma recherche avec les feuilles visibles, tout fonctionne.
mais lorsque je masque les feuilles., tout bug.
que faire svp :(

Voici le fichier en question.

Cijoint.fr - Service gratuit de dépôt de fichiers
 
C

Compte Supprimé 979

Guest
Re : bug de macro. La solution svp

Re,

Tu as ce genre de ligne dans ton code
Code:
With Sheets("conso_pp").Select
Ce n'est pas possible avec les feuille masquée :rolleyes:

Utilises tout simplement
Code:
[COLOR=blue][B]With Sheets("conso_pp")[/B][/COLOR]

Ensuite il faut remplacer les : Range(
par : .Range(

A+
 
Dernière modification par un modérateur:

Delors

XLDnaute Nouveau
Re : bug de macro. La solution svp

heureux de te retrouver bruno
merci pour ta reponse.

mais serait il possible de contourner cette ligne ?
Code:
With Sheets("conso_pp").Select

existe til autres attributs de Sheets qui peuvent permettre de lire le contenu de ma feuille masquée ?

big up :cool:
 

Etienne2323

XLDnaute Impliqué
Re : bug de macro. La solution svp

Salut Delors,
tu peux quand même travailler avec une feuille masquée par macro. L'important, c'est de ne pas faire de .Select ou de .Activate .

Il faut donc employé des codes un peu plus long. Par exemple,

Workbook("TonWorkbook").Sheets("Tafeuille").Range("TonRange").Value = "TonPrénom"

Même si la feuille est masquée, tu peux y inscrire de l'information, y lire des cellules, y faire des copies, etc... L'important, c'est que tu ne demande pas à ta macro de sélectionner la feuille. Tu dois seulement précéder chacune de tes commandes par Sheets("Tafeuille").Range("...

En espérant t'avoir éclairé un peu,

Cordialement,

Étienne
 

Delors

XLDnaute Nouveau
Re : bug de macro. La solution svp

Merci a vous Bruno et Etienne.

desolé bruno mais la solution d'Etienne semblait mieux correspondre a mon code.

Code:
Private Sub Rechercher()
    
    ' Rechercher les données en fonction des critères
    Dim rCel As Range
    Dim lgLig As Long
    Dim lgLigDeb As Long


    Dim pp1 As String
    Dim pp2 As String
    Dim pp3 As String
    Dim pp4 As String
    
    pp1 = "*"
    pp2 = "*"
    pp3 = "*"
    pp4 = "*"
    
    If nom.Value <> "" Then pp1 = nom.Value
    
    If prenom.Value <> "" Then pp2 = prenom.Value
    
    If datenais.Value <> "" Then pp3 = datenais.Value
    
    If nom_mere.Value <> "" Then pp4 = nom_mere.Value
        
    Resultat.ListBoxLocataire.Clear

    ' Cas des personnes physiques uniquement
    
    'With Sheets("conso_pp")
    
    ' Boucle de la 6eme à la dernière ligne de la feuille

    For lgLigDeb = 6 To ThisWorkbook.Sheets("conso_pp").Range("A" & Cells.Rows.Count).End(xlUp).Row

            ' LCase permet de transformer une chaine de caracteres en minuscules
                If LCase(ThisWorkbook.Sheets("conso_pp").Range("C" & lgLigDeb).Value) Like LCase("*" & pp1 & "*") _
                    And LCase(ThisWorkbook.Sheets("conso_pp").Range("D" & lgLigDeb).Value) Like LCase("*" & pp2 & "*") _
                    And LCase(ThisWorkbook.Sheets("conso_pp").Range("E" & lgLigDeb).Value) Like LCase("*" & pp3 & "*") _
                    And LCase(ThisWorkbook.Sheets("conso_pp").Range("G" & lgLigDeb).Value) Like LCase("*" & pp4 & "*") _
                Then
                    With Resultat.ListBoxLocataire
                        .AddItem ThisWorkbook.Sheets("conso_pp").Range("A" & lgLigDeb).Value
                        .List(.ListCount - 1, 1) = ThisWorkbook.Sheets("conso_pp").Range("B" & lgLigDeb).Value
                        .List(.ListCount - 1, 2) = ThisWorkbook.Sheets("conso_pp").Range("C" & lgLigDeb).Value
                        .List(.ListCount - 1, 3) = ThisWorkbook.Sheets("conso_pp").Range("D" & lgLigDeb).Value
                        .List(.ListCount - 1, 4) = ThisWorkbook.Sheets("conso_pp").Range("E" & lgLigDeb).Value
                        .List(.ListCount - 1, 5) = ThisWorkbook.Sheets("conso_pp").Range("G" & lgLigDeb).Value
                        .List(.ListCount - 1, 6) = ThisWorkbook.Sheets("conso_pp").Range("H" & lgLigDeb).Value
                        .List(.ListCount - 1, 7) = ThisWorkbook.Sheets("conso_pp").Range("I" & lgLigDeb).Value
                        .List(.ListCount - 1, 8) = ThisWorkbook.Sheets("conso_pp").Range("M" & lgLigDeb).Value
                        .List(.ListCount - 1, 9) = ThisWorkbook.Sheets("conso_pp").Range("N" & lgLigDeb).Value
                        '.List(.ListCount - 1, 9) = Range("N" & lgLigDeb).Value
                        
                        lgLig = lgLig + 1
                     End With
                End If
    Next lgLigDeb    ' Fin de la boucle For
'End With
End Sub

ca fonctionne parfaitement des a present.
et je suis tres heureux comme a la LCL

merci encore et boe soirée. :);):cool:
a+
 

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 738
Membres
105 060
dernier inscrit
DEDJAN Gaston