Problème Formulaire

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
L
Lovelypain
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 14 janvier 2019, 11:24

Bonjour,

Je souhaite créer un formulaire afin de remplir un tableau.

J'ai donc trouvé cette formule pour ajouter des lignes. Malheureusement, une erreur apparait sur la ligne souligné et en gras. Je ne comprends pas pourquoi :-)))

Private Sub CommandButton1_Click()
If TextBox1 = “” Or ComboBox1 = “” Or TextBox2 = “” Or ComboBox2 = “” Or TextBox3 = “” Then
MsgBox "Merci de remplir tout les champs"
Else
If Sheets(“TAB”).Range(“A5”) = "" Then
Sheets(“TAB”).Range(“A5”) = TextBox3
Else
Sheets(“TAB”).ListObjects(1).ListRows.Add
End If
Dlt = Sheets(“TAB”).Range(“E1048576”).End(xlUp).Row
Sheets(“TAB”).Range(“A” & Dlt) = TextBox3
Sheets(“TAB”).Range(“B” & Dlt) = ComboBox1
Sheets(“TAB”).Range(“C” & Dlt) = TextBox2
Sheets(“TAB”).Range(“d” & Dlt) = ComboBox2
Sheets(“TAB”).Range(“e” & Dlt) = TextBox1
Unload UserForm1
End If
End Sub

Cordialement,

Lovelypain
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'118
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 14 janvier 2019, 11:32

Bonjour,

tes guillemets sont étranges, regarde la différence entre les tiennes et les miennes:
“ "
Du coup ça te fait planter tout comme ce n'est pas le bon caractère, je te renvoie le code corrigé:
Private Sub CommandButton1_Click()
If TextBox1 = "" Or ComboBox1 = "" Or TextBox2 = "" Or ComboBox2 = "" Or TextBox3 = "" Then
    MsgBox "Merci de remplir tout les champs"
Else
    If Sheets("TAB").Range("A5") = "" Then
        Sheets("TAB").Range("A5") = TextBox3
    Else
        Sheets("TAB").ListObjects(1).ListRows.Add
    End If
    Dlt = Sheets("TAB").Range("E1048576").End(xlUp).Row
    Sheets("TAB").Range("A" & Dlt) = TextBox3
    Sheets("TAB").Range("B" & Dlt) = ComboBox1
    Sheets("TAB").Range("C" & Dlt) = TextBox2
    Sheets("TAB").Range("d" & Dlt) = ComboBox2
    Sheets("TAB").Range("e" & Dlt) = TextBox1
    Unload UserForm1
End If
End Sub
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
L
Lovelypain
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 14 janvier 2019, 11:44

Exact Probleme de Guillemet Merci :) .

Mais du coup nouveau Problème à signaler.
Quand je remplis le formulaire, ça m'ajoute la premiere ligne à partir de A3, mais cela me rajoute aussi la date du jour pour A5 en laissant vide les autres cellules. Puis quand j'en recrée un second ça me met une erreur sur cette ligne
Sheets("TAB").ListObjects(1).ListRows.Add
Voici ci joint le fichier

Cordialement,

Lovelypain
DOSSIER REPERTOIRE PARTAGE MACRO.xlsm
(43.39 Kio) Téléchargé 3 fois
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'118
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 14 janvier 2019, 11:48

Bonjour,

Maintenant ça va devenir compliqué de t'aider sans le fichier, car je ne sais pas ce qu'est ton listobject(1), tu peux avoir plusieurs erreurs, le listobject peut ne pas exister, dans ce cas l'index 1 est invalide, ou bien encore, tu fais un appel de propriété incorect, soit ce n'est pas utilisable avec cet objet, soit il te manque un argument, tu peux vérifier tout ça, le message d'erreur peut aussi t'orienter vers où est le souci, mais... je n'ai accès à aucune de ces informations :bof:

EDIT:

je regarde le fichier

EDIT 2:
J'ai regardé, je n'ai pas bien compris comment tu voulais structurer ton fichier, c'est bizarre ton codage...
L'erreur est : l'indice n'appartient pas à la sélection, quand je regarde, listobjects(1) appelle un objet qui n'existe pas, car quand je regarde listobjects, la propriété count renvoie 0, autrement dis, pas de listobjects, tu n'as créé ton tableau nul part, du coup tu ne peux pas l'appeler... C'est ça qui fait planter ton code.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
L
Lovelypain
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 14 janvier 2019, 12:02

Ecoute j'ai suivi un tuto sur internet, et je pense pas avoir compris non plus :lol:

Du coup j'ai créer un tableau mais j'ai pas l'impression que ça change grand chose.

Merci pour ton temps

Cordialement,

Lovelypain
DOSSIER REPERTOIRE PARTAGE MACRO.xlsm
(44.93 Kio) Téléchargé 5 fois
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'118
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 14 janvier 2019, 13:37

Rebonjour,

J'ai fait pas mal de modifications sur ton fichier:
Rennomage de tous les contrôles utilisés, pour plus de lisibilité, changement de l'ordre de tabulation, pour que tout se suive (clic droit sur le fond du formulaire puis ordre de tabulation), réécriture du programme d'exportation des données, initialisation de la textbox contenant la date au lancement du formulaire plutôt que par changement dessus. Et suppression de toutes les lignes de ton tableau, sauf la première.

Ce qui n'allait pas dans ton code:
Répétition de Sheets("TAB") partout, tu peux simplement mettre un With Sheets("TAB") au début, et un end with à la fin de son utilisation.
Pas de logique sur certaines lignes:
If Sheets("TAB").Range("A4") = "" Then
Sheets("TAB").Range("A4") = TextBox3
Ceci ne sert pas, tu calcules la dernière ligne, tu regardes si elle est vide et si ce n'est pas le cas, tu incrémentes ta ligne d'export de 1.
Sheets("TAB").ListObjects(1).ListRows.Add
Ne sert pas, le tableau le fait tout seul quand tu écris en dessous de sa dernière ligne.
Dlt = Sheets("TAB").Range("E1048576").End(xlUp).Row
Utilises plutôt Rows.count que 1048576, premièrement, tu ne cherches pas le nombre de lignes, deuxièmement, c'est compatible avec de plus anciennes versions d'un classeur, qui ont moins de lignes.

Voici le nouveau code:
Nouveau code du bouton valider:Afficher
Private Sub CommandButton_valider_Click()
If ComboBox_collectivite = "" Or ComboBox_service = "" Or TextBox_agent = "" Or TextBox_detail = "" Then
    MsgBox "Merci de remplir tout les champs"
Else
    With Sheets("TAB")
        der_lig = .Range("a" & .Rows.Count).End(xlUp).Row
        
        If .Range("a" & der_lig) <> "" Then
            der_lig = der_lig + 1
        End If
        
        .Range("a" & der_lig) = Date
        .Range("b" & der_lig) = ComboBox_collectivite
        .Range("c" & der_lig) = TextBox_agent
        .Range("d" & der_lig) = ComboBox_service
        .Range("e" & der_lig) = TextBox_detail
        
    End With
End If
Unload Me
End Sub
Le fichier qui va avec:
DOSSIER REPERTOIRE PARTAGE MACRO.xlsm
(44.93 Kio) Téléchargé 8 fois
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
L
Lovelypain
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 14 janvier 2019, 14:42

Wow :mrgreen:, merci pour ton soutien. Je vais bucher tout ça pour essayer de le refaire tout seul.

Encore une fois merci beaucoup,

Cordialement,

Lovelypain
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'118
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 14 janvier 2019, 14:46

De rien :)

Et tu n'es pas au bout de tes peines, il faudra alimenter les listes de tes combobox avec ta base de données, et là... ça va te demander un peu de codage, si tu vois ce que je veux dire :P

Bonne lecture et bonne digestion :)
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message