Erreur base de données

Le
bob1877 Hors ligne
Bonjour,

J'arrive à sélectionner via un combobox les données à afficher dans mes textbox.
Le seul problème est que lorsque la base de données ne contient qu'une seule entrée, cela plante.

Je pense que ce la vient de la fin de mon code (je l'ai mis entre des $$) mais ne voit pas comment le modifier.

Private Sub Charger_Les_Données_Dans_Formulaire()

'Déterminer la plage de cellules contenant les données
Dim DerCol As Integer
Dim DerLig As Long

With Feuil5

'Détermine la dernière colonne occupée dans la feuille
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Détermine la dernière ligne occupée dans la feuille
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row


'Rg une variable objet contenant ta base de donnée
'la plage débute en ligne 2
Set Rg = .Range("A2", .Cells(DerLig, DerCol))

'Renseigner le combobox des Noms et Prénoms de ta base de donnée
With Me.ComboBox1
'largeur des colonnes
.ColumnWidths = "120"
End With
'les données du combobox
$$$ Me.ComboBox1.List = .Range("B2:B" & DerLig).Value $$$$
End With
Me.ComboBox1.SetFocus
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
bob1877 Hors ligne
Le #23170491
bob1877 a écrit le 02/03/2011 à 13h50 :
Bonjour,

J'arrive à sélectionner via un combobox les données
à afficher dans mes textbox.
Le seul problème est que lorsque la base de données ne contient
qu'une seule entrée, cela plante.

Je pense que ce la vient de la fin de mon code (je l'ai mis entre des $$) mais
ne voit pas comment le modifier.

Private Sub Charger_Les_Données_Dans_Formulaire()

'Déterminer la plage de cellules contenant les données
Dim DerCol As Integer
Dim DerLig As Long

With Feuil5

'Détermine la dernière colonne occupée dans la
feuille
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Détermine la dernière ligne occupée dans la
feuille
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row


'Rg une variable objet contenant ta base de donnée
'la plage débute en ligne 2
Set Rg = .Range("A2", .Cells(DerLig, DerCol))

'Renseigner le combobox des Noms et Prénoms de ta base de
donnée
With Me.ComboBox1
'largeur des colonnes
.ColumnWidths = "120"
End With
'les données du combobox
$$$ Me.ComboBox1.List = .Range("B2:B" & DerLig).Value
$$$$
End With
Me.ComboBox1.SetFocus
End Sub


Re,
Je bidouille je bidouille et j'ai trouvé un début de solution.
C'est peut etre pas très fin mais cela fonctionne.
J'ai rajouté quelques lignes

If Worksheets("Client").Range("C2") = "" Then
Worksheets("Client").Range("B2") = "Créer une nouvelle fiche"
End If
If Worksheets("Client").Range("C3") = "" Then
Worksheets("Client").Range("B3") = "Fin"
End If

ainsi je suis sur que les 2 premières lignes aient du texte à afficher dans ma combobox.

Après j'ai rajouté dans
Private Sub ComboBox1_Change()

If .Value = "Créer une nouvelle fiche" Then
Sheets("Employé").Activate
UEmploye.Show
End If

ainsi j'ouvre directement le formulaire de saisie d'un nouveau client.
isabelle
Le #23170811
bonjour bob,

Me.ComboBox1.List = .Range("B2:B" & DerLig).Value



si ComboBox1 ne contient que les données de la colonne B, pourquoi de
pas trouver seulement la derniere ligne de cette colonne ?

Set PlgSource = .Range("B2:B" & .Range("B65536").End(xlUp).Row)
Me.ComboBox1.List = PlgSource.Value

isabelle

Le 2011-03-02 07:50, bob1877 a écrit :
Bonjour,

J'arrive à sélectionner via un combobox les données à afficher dans mes
textbox.
Le seul problème est que lorsque la base de données ne contient qu'une seule
entrée, cela plante.

Je pense que ce la vient de la fin de mon code (je l'ai mis entre des $$) mais
ne voit pas comment le modifier.

Private Sub Charger_Les_Données_Dans_Formulaire()

'Déterminer la plage de cellules contenant les données
Dim DerCol As Integer
Dim DerLig As Long

With Feuil5

'Détermine la dernière colonne occupée dans la feuille
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Détermine la dernière ligne occupée dans la feuille
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row


'Rg une variable objet contenant ta base de donnée
'la plage débute en ligne 2
Set Rg = .Range("A2", .Cells(DerLig, DerCol))

'Renseigner le combobox des Noms et Prénoms de ta base de donnée
With Me.ComboBox1
'largeur des colonnes
.ColumnWidths = "120"
End With
'les données du combobox
$$$ Me.ComboBox1.List = .Range("B2:B"& DerLig).Value $$$$
End With
Me.ComboBox1.SetFocus
End Sub

isabelle
Le #23171201
ok je comprend mieux, tu pourrais ajouter un à la derniere ligne,

Set PlgSource = .Range("B2:B" & .Range("B65536").End(xlUp).Row + 1)
Me .ComboBox1.List = PlgSource.Value

isabelle

Le 2011-03-02 10:54, isabelle a écrit :
bonjour bob,

>Me.ComboBox1.List = .Range("B2:B" & DerLig).Value

si ComboBox1 ne contient que les données de la colonne B, pourquoi de
pas trouver seulement la derniere ligne de cette colonne ?

Set PlgSource = .Range("B2:B" & .Range("B65536").End(xlUp).Row)
Me.ComboBox1.List = PlgSource.Value

isabelle

Le 2011-03-02 07:50, bob1877 a écrit :
Bonjour,

J'arrive à sélectionner via un combobox les données à afficher dans mes
textbox.
Le seul problème est que lorsque la base de données ne contient
qu'une seule
entrée, cela plante.

Je pense que ce la vient de la fin de mon code (je l'ai mis entre des
$$) mais
ne voit pas comment le modifier.

Private Sub Charger_Les_Données_Dans_Formulaire()

'Déterminer la plage de cellules contenant les données
Dim DerCol As Integer
Dim DerLig As Long

With Feuil5

'Détermine la dernière colonne occupée dans la feuille
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Détermine la dernière ligne occupée dans la feuille
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row


'Rg une variable objet contenant ta base de donnée
'la plage débute en ligne 2
Set Rg = .Range("A2", .Cells(DerLig, DerCol))

'Renseigner le combobox des Noms et Prénoms de ta base de
donnée
With Me.ComboBox1
'largeur des colonnes
.ColumnWidths = "120"
End With
'les données du combobox
$$$ Me.ComboBox1.List = .Range("B2:B"& DerLig).Value $$$$
End With
Me.ComboBox1.SetFocus
End Sub
bob1877 Hors ligne
Le #23181031
isabelle a écrit le 02/03/2011 à 18h19 :
ok je comprend mieux, tu pourrais ajouter un à la derniere ligne,

Set PlgSource = .Range("B2:B" &
.Range("B65536").End(xlUp).Row + 1)
Me .ComboBox1.List = PlgSource.Value

isabelle

Le 2011-03-02 10:54, isabelle a écrit :
bonjour bob,

>Me.ComboBox1.List = .Range("B2:B" & DerLig).Value

si ComboBox1 ne contient que les données de la colonne B, pourquoi de
pas trouver seulement la derniere ligne de cette colonne ?

Set PlgSource = .Range("B2:B" &
.Range("B65536").End(xlUp).Row)
Me.ComboBox1.List = PlgSource.Value

isabelle

Le 2011-03-02 07:50, bob1877 a écrit :
Bonjour,

J'arrive à sélectionner via un combobox les données
à afficher dans mes
textbox.
Le seul problème est que lorsque la base de données ne contient
qu'une seule
entrée, cela plante.

Je pense que ce la vient de la fin de mon code (je l'ai mis entre des
$$) mais
ne voit pas comment le modifier.

Private Sub Charger_Les_Données_Dans_Formulaire()

'Déterminer la plage de cellules contenant les données
Dim DerCol As Integer
Dim DerLig As Long

With Feuil5

'Détermine la dernière colonne occupée dans la feuille
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column

'Détermine la dernière ligne occupée dans la feuille
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row


'Rg une variable objet contenant ta base de donnée
'la plage débute en ligne 2
Set Rg = .Range("A2", .Cells(DerLig, DerCol))

'Renseigner le combobox des Noms et Prénoms de ta base de
donnée
With Me.ComboBox1
'largeur des colonnes
.ColumnWidths = "120"
End With
'les données du combobox
$$$ Me.ComboBox1.List = .Range("B2:B"& DerLig).Value
$$$$
End With
Me.ComboBox1.SetFocus
End Sub






Merci Isabelle,
j'ai écrit ceci

With Feuil3
If .Range("C2") = "" Then
.Range("B2") = "Créer une nouvelle fiche"
End If

If .Range("C3") = "" Then
.Range("B3") = "Fin"
Sheets("Employé").Range("$A$1:$E$4").RemoveDuplicates Columns:=2, Header:=xlYes
End If
End With

avec un petit bout de code plus loin pour que, lorsqu l'utilisateur affiche "Créer une nouvelle fiche" dans le combobox, le userform dédié soit ouvert.
Cela rend pas mal.

Merci encore
Publicité
Poster une réponse
Anonyme