Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code erreur VBA range

AMIGOVBA

XLDnaute Nouveau
Bonjour, j'ai créé un formulaire pour remplir un fichier Excel, dont voici le code et j'ai cette erreur.

J'aimerais votre avis merci à tous

 

AMIGOVBA

XLDnaute Nouveau
Bonsoir , j'explique le fonctionnement, j'ai un bouton pour faire une recherche
le bouton bleu , le second bouton appeler bouton 5 je desire remplir le tableau FAQ avec celui , pour integrer des element dont une photo et j'aimerais qu'il ne soit acccesible que par Mot de passe , au gestionnaire de la FAQ ( Foire aux questions )

Merci a toi
 

Pièces jointes

  • FAQ-OCW v14-1 PI-SSI + saisie.xlsm
    738.9 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour AmigoVba, Job,
En PJ la macro reprise en partie avec :
VB:
Private Sub Valider_Click()
Dim ligne As Long, Target As Range, NomImg As String
    If [Tableau1].Item(1, 1) = "" Then ligne = 1 Else ligne = 1 + [Tableau1].ListObject.ListRows.Count
    With Worksheets("FAQ")
        .Activate
        [Tableau1].Item(ligne, 1) = TextBox1.Value
        [Tableau1].Item(ligne, 2) = TextBox2.Value
        [Tableau1].Item(ligne, 3) = TextBox4.Value
        [Tableau1].Item(ligne, 4) = TextBox3.Value
        [Tableau1].Item(ligne, 5) = TextBox5.Value
        [Tableau1].Item(ligne, 6) = TextBox6.Value
    End With
End Sub
NB: La partie qui suit a été mise en commentaires.
D'autre part dans un TDS il faut laisser XL gérer les lignes, donc supprimer toutes les lignes vides.
 

Pièces jointes

  • FAQ-OCW v14-1 PI-SSI + saisie.xlsm
    574.2 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Ce qui est étonnant c'est que vous écriviez une si longue macro sans la tester dès le départ.
Il suffit d'écrire :
VB:
Private Sub Valider_Click()
Dim ligne As Long, Target As Range, NomImg As String
    If Range("FAQ").Item(1, 1) <> "" Then ligne = Range("FAQ").Rows.Count + 1 Else ligne = 1
    With Worksheets("FAQ")
        .Activate
        .Range("FAQ" & "[Titre]").Item(ligne, 1) = TextBox1.Value
    End With
End Sub
Et déjà là, ça ne marche pas. Donc vous débuguer ce petit code et lorsqu'il marche vous continuez.
Et vous gagnerez énormément de temps.
 

AMIGOVBA

XLDnaute Nouveau
merci a toi au top
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Comme ça, ça marche, on peut encore optimiser avec :
Code:
Private Sub Valider_Click()
Dim ligne As Long, Target As Range, NomImg As String, i%
    If [Tableau1].Item(1, 1) = "" Then ligne = 1 Else ligne = 1 + [Tableau1].ListObject.ListRows.Count
    For i = 1 To 6
        [Tableau1].Item(ligne, i) = UserForm1.Controls("TextBox" & i).Value
    Next i
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le plus simple :
VB:
Sub lancerFormulaire()
    If InputBox("Mot de passe : ") <> "1234" Then Exit Sub
    UserForm1.Show
End Sub
(Changer 1234 pour le mot de passe désiré )
Très simple mais le mot de passe est lisible à l'écriture, sinon il faut passer par un userform..
 

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
Apprenez a travailler avec les tableaux structurés avec les bons outils et de la bonne manière
si le tableau1 a été créé correctement la ligne 1 n'est que visuelle au départ
VB:
Private Sub valider_Click()
    With Range("Tableau1").ListObject.ListRows.Add.Range
        For i = 1 To 6
            .Cells(i) = Me.Controls("TextBox" & i).Value
        Next
    End With
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Patrick,
Apprenez a travailler avec les tableaux structurés avec les bons outils et de la bonne manière
C'est ce que j'essaie de faire, Maitre.
Mais si le tableau est vide alors votre macro commence en ligne 2, la ligne 1 est ignorée.


Lorsque j'applique ma macro :
VB:
Private Sub Valider_Click()
Dim ligne As Long, Target As Range, NomImg As String, i%
    If [Tableau1].Item(1, 1) = "" Then ligne = 1 Else ligne = 1 + [Tableau1].ListObject.ListRows.Count
    For i = 1 To 6
        [Tableau1].Item(ligne, i) = UserForm1.Controls("TextBox" & i).Value
    Next i
End Sub
La ligne 1 est bien prise comme référence au début :


En quoi mon code n'est pas conçu "de la bonne manière" ?
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…