INTERFACE AVEC VBA

Résolu
AZIZIYOUSSEF Messages postés 1 Statut Membre -  
jawja Messages postés 9 Statut Membre -
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

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  2. jawja Messages postés 9 Statut Membre
     
    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
  3. PlacageGranby Messages postés 402 Statut Membre 26
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour

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

      0
  4. jawja Messages postés 9 Statut Membre
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jawja Messages postés 9 Statut Membre
     
    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