INTERFACE AVEC VBA

Résolu/Fermé
AZIZIYOUSSEF Messages postés 1 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 4 septembre 2014 - Modifié par pijaku le 5/09/2014 à 08:42
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014 - 5 sept. 2014 à 10:30
Bonjour

je suis en train de créer une interface avec VBA qui va permettre de saisir des données sur excel et qui va être considérer comme une base de données,
j'ai fait un ptit code pour ajouter des informations au début, mais ça me donne tjrs une erreur
voilà le code que j'ai faite

'Pour le bouton ajouter
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'ajout de cette nouvelle bobine ? ", vbYesNo, " Demande de confirmation d'ajout ") = vbYes Then
L = Sheets("[/contents/104-bases-de-donnees-introduction BDD]").Range("a65536?").End(xlUp).Row + 1
  Range("A" & L).Value = TextBox1
  Range("B" & L).Value = TextBox2
  Range("C" & L).Value = TextBox3
  End If
End Sub

'pour le bouton quitter

Private Sub CommandButton4_Click()
    Unload Me
End Sub


l'erreur se trouve dans la ligne suivante:L = Sheets("BDD").Range("a65536?").End(xlUp).Row + 1

il me donne erreur d'exécution "1004"

merci d'avance pour votre aide
crdlt

5 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 sept. 2014 à 14:08
Bonjour,

Il serait préférable de déclarer L de type Long et ensuite pour rechercher la dernière ligne renseignée, je partirai de la cellule A1 avec XlDown.
Pour l'erreur "1004", je pense que cela vient du point d'interrogation dans la désignation du range.
0
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
4 sept. 2014 à 14:45
Merci pour votre réponse Polux31, j'ai supprimer le point d'interrogation et ça a marché sans utiliser le Xldown, par contre est ce que je peut utiliser cette dernière pour effectuer une recherche en parcourant la première colonne de mon tableau?
Merci
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par pijaku le 5/09/2014 à 08:41
Si tu recherche la prochaine ligne vide.
Tu peux boucler sur le contenu de ta colonne A

L = 2  'Mettre la ligne ou débute ta base de données

While (Sheets("BDD").Range("A"& L).value <> ""
L = L + 1
wend



Donc Prochaine_ligne va te donner la prochaine ligne vide lorsqu'il sort de la boucle
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par pijaku le 5/09/2014 à 08:44
Bonjour

Directement sans boucle
With Sheets("BDD")
Ligvid = .Columns("A").Find("", .Range("A2"), xlValues).Row
End With

0
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
Modifié par pijaku le 5/09/2014 à 08:41
en fait ce que je veux faire c'est de chercher si une bobine existe ou non dans la première colonne, si elle existe alors j'affiche dans textbox2 et textbox3 les cellules qui corespond à la l'intersection de la place de la ligne trouvée avec les colonnes B et C, si la bobine n'existe pas, un message d'erreur s'affiche.
voilà la partie du code qui fait ça!


' 3-chercher et afficher l'existance d'une bobine
Private Sub commandbutton2_Click()
Dim Res As Range, Col As Range
Dim Id As Integer
Dim AdRes As String
Dim Ll As Integer
Id = TextBox1
Set Col = Sheets("BDD").Columns(1)
Set Res = Col.Cells.Find(what:=Id, LookAt:=xlWhole)
If Res Is Nothing Then
MsgBox "Bobine inéxistante!!", vbExclamation, "Message Erreur"
Else
 MsgBox "la bobine existe!!", vbExclamation, "Message Erreur"
' AdRes sera l'adress du resultat trouvé
AdRes = Res.Address
Ll = Sheets("BDD").Range(AdRes).Row   ' Ll devient le numéro de ligne et à partir de la
TextBox2 = Range(" B " & Ll).Value
TextBox3 = Range(" C " & Ll).Value
End If
End Sub


merci infiniment pour votre temps et votre aide :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 5/09/2014 à 08:46
bonjour

Pourquoi dire que la bobine existe puisque les résultats apparaissent dans le formulaire ?
les sorties de code doivent toujours être traitées en fin de procédure (règle d'algorithme)

proposition:
Option Explicit
'-----
Private Sub commandbutton2_Click()
Dim Id As Integer
Dim Li As Integer

Id = TextBox1
With Sheets("BDD")
On Error GoTo Errhandler
'on considère que les entêtes de la base sont en ligne 1
Li = .Columns("A").Find(what:=Id, After:=.Range("A1"), LookAt:=xlWhole).Row
'affichage
TextBox2 = .Range(" B " & Ll).Value
TextBox3 = .Range(" C " & Ll).Value
End With
Exit Sub

Errhandler:
MsgBox "Bobine inéxistante!!", vbExclamation, "Message Erreur"
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jawja Messages postés 9 Date d'inscription jeudi 4 septembre 2014 Statut Membre Dernière intervention 12 septembre 2014
5 sept. 2014 à 10:30
Bonjour

j'ai essayer avec votre modifications, mais ça me donne tjrs une erreur, il ne traite pas le cas ou la bobine existe et affiche les informations!

pour préciser je vais chercher sur la colonne A et afficher les cellules des colonnes B et C

regards,
0