Au secours, j'y comprends rien [VBA] Excel (Erreur 91)

Jesusdenazarrete Messages postés 102 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 12 juin 2012 - 13 mars 2008 à 16:18
Jesusdenazarrete Messages postés 102 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 12 juin 2012 - 14 mars 2008 à 08:36
Bonjour,

Donc voila je me bats avec ce programme depuis ce matin...
3 feuilles :
1 : Recherche qui contient les boutons et les champs de recherches on y colle les résultats à partir de la ligne 17
2 : Facturation qui contient les données
3 : Critères qui contient les colonnes qui alimentent mes menus déroulants

J'ai une erreur mais je ne sais pas d'ou elle vient (Erreur 91)

Public vligne As Long
-------------------------------------------------------------
Public Sub Recherche_initialize()


vligne = 17
'ici j'alimente le menu déroulant

worksheets("Critères").Activate


Dim vsecteur As Range


With Recherche.CCherchSecteur
vsecteur = Range("a1").End(xlDown).Address
.ColumnHeads = True
.RowSource = "a1:" & vsecteur
End With

'je fini d'alimenter


worksheets("Recherche").Activate


End Sub
--------------------------------------------------------------------------
Public Sub Bcherch_Click() (Cette partie fonctionne bien ne vous embettez pas)


Dim vtrouve As Range
 
  With worksheets("Facturation")
        .Activate
        Set vtrouve = .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Find(What:=Ccherch.Value)
        If Nothing Is vtrouve Then
            MsgBox "Non trouvé!"
        Else
            .Cells(vtrouve.Row, vtrouve.Column).EntireRow.Copy
        worksheets("recherche").Activate
         Cells(vligne, 1).Select
         ActiveSheet.Paste
         vligne = vligne + 1
        End If
 
    End With


End Sub
-------------------------------------------
Public Sub Ccherch2_Click() (c'est de la que viens le problème je pense)


Dim vtrouve As Range
   
If CCherchSecteur.Value <> "ESCADD" And CCherchSecteur.Value <> "SOCABU" And CCherchSecteur.Value <> "BCI" And CCherchSecteur.Value <> "SAS" And CCherchSecteur.Value <> "ECP" Then


MsgBox "Aucun secteur sélectionné!"
    worksheets("Recherche").Activate
   
Else
   
Sheets("Facturation").Select
    Rows("3:3").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=4, Criteria1:=CCherchSecteur
    Selection.AutoFilter Field:=10, Criteria1:=""


With worksheets("Facturation")
        .Activate
        Set vtrouve = .Range(.Cells(4, 1), .Cells.SpecialCells(xlCellTypeLastCell))
            .Range(vtrouve).Copy
                worksheets("recherche").Activate
         Cells(vligne, 1).Select
         ActiveSheet.Paste
    vligne = vligne + 1
   
End With
   
End If


End Sub


Public Sub CCherchSecteur_Change()


End Sub


Public Sub Ccherch_change()


End Sub


Si quelqu'un peut m'éclairer, c'est super
Je remercie d'avance celui qui pourra

Jesus

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
13 mars 2008 à 16:27
Salut,
Aller un peu de couleur.
Il aurait utile de nous rapeler l'énoncé de l'erreur.
De plus tu peux nous dire sur quelle ligne apparait l'erreur
Variable  objet ou variable bloc With non définie.

le plus souvent Cela apparait lorsqu'un objet n'est pas instancié

Public vligne As Long
'-------------------------------------------------------------
Public Sub Recherche_initialize()

vligne = 17
'ici j'alimente le menu déroulant

worksheets("Critères").Activate

Dim vsecteur As Range

With Recherche.CCherchSecteur
vsecteur = Range("a1").End(xlDown).Address
.ColumnHeads = True
.RowSource = "a1:" & vsecteur
End With

'je fini d'alimenter

worksheets("Recherche").Activate

End Sub<hr />'--------------------------------------------------------------------------
'(Cette partie fonctionne bien ne vous embettez pas)
Public Sub Bcherch_Click()

Dim vtrouve As Range

 With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Find(What:=Ccherch.Value)
       If Nothing Is vtrouve Then
           MsgBox "Non trouvé!"
       Else
           .Cells(vtrouve.Row, vtrouve.Column).EntireRow.Copy
       worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
        vligne = vligne + 1
       End If

   End With

End Sub<hr />
Public Sub Ccherch2_Click() '(c'est de la que viens le problème je pense)

Dim vtrouve As Range
 
If CCherchSecteur.Value <> "ESCADD" And CCherchSecteur.Value <> "SOCABU" And CCherchSecteur.Value <> "BCI" And CCherchSecteur.Value <> "SAS" And CCherchSecteur.Value <> "ECP" Then

MsgBox "Aucun secteur sélectionné!"
   worksheets("Recherche").Activate
 
Else
 
Sheets("Facturation").Select
   Rows("3:3").Select
   Selection.AutoFilter
   Selection.AutoFilter Field:=4, Criteria1:=CCherchSecteur
   Selection.AutoFilter Field:=10, Criteria1:=""

With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(4, 1), .Cells.SpecialCells(xlCellTypeLastCell))
           .Range(vtrouve).Copy
               worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
   vligne = vligne + 1
 
End With
 
End If

End Sub<hr />
Public Sub CCherchSecteur_Change()

End Sub<hr />
Public Sub Ccherch_change()

End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 mars 2008 à 22:13
Bonsoir,

Excusez ma nullité en VBA/Excell
Quelqu'un pourrait m'expliquer ceci :

Set vtrouve = .Range(.Cells(4, 1), .Cells.SpecialCells(xlCellTypeLastCell))
           .Range(vtrouve).Copy

Ce que je ne comprends pas est que l'on puisse faire une plage de place (.Range(vtrouve) ) puisque vtrouve est un range ...

Comment ça marche ???
0
Jesusdenazarrete Messages postés 102 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 12 juin 2012
14 mars 2008 à 08:21
Re bonjour et merci de vous etre penchés sur le problème...

J'ai donc repris les couleurs (c'est vrai que c'est plus clair ;))

Je vais vous indiquer en Jaune ou sont les erreurs et de quel type elles sont...


Public vligne As Long
'-------------------------------------------------------------
Public Sub Recherche_initialize()

vligne = 17
'ici j'alimente le menu déroulant

worksheets("Critères").Activate

Dim vsecteur As Range

With Recherche.CCherchSecteur
vsecteur = Range("a1").End(xlDown).Address (Erreur 91)
.ColumnHeads = True
.RowSource = "a1:" & vsecteur
End With

'je fini d'alimenter

worksheets("Recherche").Activate

End Sub<hr />'--------------------------------------------------------------------------
'(Cette partie fonctionne bien ne vous embettez pas)
Public Sub Bcherch_Click()

Dim vtrouve As Range

 With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Find(What:= Ccherch.Value)
       If Nothing Is vtrouve Then
           MsgBox "Non trouvé!"
       Else
           .Cells(vtrouve.Row, vtrouve.Column).EntireRow.Copy
       worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
        vligne = vligne + 1
       End If

   End With

End Sub<hr />
Public Sub Ccherch2_Click() '(c'est de la que viens le problème je pense)

Dim vtrouve As Range
 
If CCherchSecteur.Value <> "ESCADD" And CCherchSecteur.Value <> "SOCABU" And CCherchSecteur.Value <> "BCI" And CCherchSecteur.Value <> "SAS" And CCherchSecteur.Value <> "ECP" Then

MsgBox "Aucun secteur sélectionné!"
   worksheets("Recherche").Activate
 
Else
 
Sheets("Facturation").Select
   Rows("3:3").Select (Erreur 1004)
   Selection.AutoFilter
   Selection.AutoFilter Field:= 4, Criteria1:=CCherchSecteur
   Selection.AutoFilter Field:=10, Criteria1:= ""

With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(4, 1), .Cells.SpecialCells(xlCellTypeLastCell))
           .Range(vtrouve).Copy
               worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
   vligne = vligne + 1
 
End With
 
End If

End Sub<hr />
Public Sub CCherchSecteur_Change()

End Sub<hr />
Public Sub Ccherch_change()

End Sub

Veuillez m'excuser pour ne pas avoir noté les lignes, je débute en programmation et ne connaissait pas le débuggeur pas a pas...lol

Se ce, merci et bonne chance les gars
0
Jesusdenazarrete Messages postés 102 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 12 juin 2012
14 mars 2008 à 08:36
Re bonjour et merci de vous etre penchés sur le problème...

J'ai donc repris les couleurs (c'est vrai que c'est plus clair ;))

Je vais vous indiquer en Jaune ou sont les erreurs et de quel type elles sont...


Public vligne As Long
'-------------------------------------------------------------
Public Sub Recherche_initialize()

vligne = 17
'ici j'alimente le menu déroulant

worksheets("Critères").Activate

Dim vsecteur As Range

With Recherche.CCherchSecteur
vsecteur = Range("a1").End(xlDown).Address (Erreur 91)
.ColumnHeads = True
.RowSource = "a1:" & vsecteur
End With

'je fini d'alimenter

worksheets("Recherche").Activate

End Sub<hr />'--------------------------------------------------------------------------
'(Cette partie fonctionne bien ne vous embettez pas)
Public Sub Bcherch_Click()

Dim vtrouve As Range

 With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Find(What:= Ccherch.Value)
       If Nothing Is vtrouve Then
           MsgBox "Non trouvé!"
       Else
           .Cells(vtrouve.Row, vtrouve.Column).EntireRow.Copy
       worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
        vligne = vligne + 1
       End If

   End With

End Sub<hr />
Public Sub Ccherch2_Click() '(c'est de la que viens le problème je pense)

Dim vtrouve As Range
 
If CCherchSecteur.Value <> "ESCADD" And CCherchSecteur.Value <> "SOCABU" And CCherchSecteur.Value <> "BCI" And CCherchSecteur.Value <> "SAS" And CCherchSecteur.Value <> "ECP" Then

MsgBox "Aucun secteur sélectionné!"
   worksheets("Recherche").Activate
 
Else
 
Sheets("Facturation").Select
   Rows("3:3").Select (Erreur 1004)
   Selection.AutoFilter
   Selection.AutoFilter Field:= 4, Criteria1:=CCherchSecteur
   Selection.AutoFilter Field:=10, Criteria1:= ""

With worksheets("Facturation")
       .Activate
       Set vtrouve = .Range(.Cells(4, 1), .Cells.SpecialCells(xlCellTypeLastCell))
           .Range(vtrouve).Copy
               worksheets("recherche").Activate
        Cells(vligne, 1).Select
        ActiveSheet.Paste
   vligne = vligne + 1
 
End With
 
End If

End Sub<hr />
Public Sub CCherchSecteur_Change()

End Sub<hr />
Public Sub Ccherch_change()

End Sub

Veuillez m'excuser pour ne pas avoir noté les lignes, je débute en programmation et ne connaissait pas le débuggeur pas a pas...lol

Se ce, merci et bonne chance les gars
0
Rejoignez-nous