INSERTION DE LIGNE DANS TABLEAU

Nosma

XLDnaute Nouveau
Bonjour,
jai un petit soucis je debute en VBA et pour les besoins de mon entreprise je realise un fichier, dans le fichier mon code VBA bloque. (feuille "prevision de signature")
jai fait un formulaire et j'aimerai que les ligne s'insère les une au dessus des autres tout en restant dans le tableau.
pouvez-vous m'aider a compléter mon code
SVP
 

Pièces jointes

  • 2.0TEST INSERTION DE LIGNE 2.0.xlsm
    381.9 KB · Affichages: 14
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Plutot qu'un Ws As Worksheet, déclarez donc un LOt As ListObject, que vous initialiserez
Set LOt = Worksheets("PREVISION DE SIGNATURE").ListObjects(1)
Puis
Me.ComboBox1.List = LOt.ListColumns("CLERC").DataBodyRange.Value
Pour obtenir un RngLig As Range représentant une ligne ajoutée :
Set RngLig = LOt.ListRows.Add.Range
Personnellement le mets toujours mes valeurs prises des contrôles dans un tableau TVL que j'affecte en une fois à la RngLig.Value
Remarque: vous avez une Private Sub UserForm_Initialize() dans un module d'objet Worksheet, au lieu d'un UserForm.
 

vgendron

XLDnaute Barbatruc
Hello

avec ceci?
VB:
Private Sub CommandButton1_Click()
'A ce niveau vous allez insérer le code suivant entre les deux lignes affichées
Dim L As Integer
If MsgBox("CONFIRMER signature prévisionnelle ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
    Rows("6:6").Insert Shift:=xlDown
   
    Range("A" & 6).Value = ComboBox2 'Insère la donnée de la liste déroulante dans la colonne A
    Range("B" & 6).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
    'et à suivre....
    Range("C" & 6).Value = ComboBox1
    Range("D" & 6).Value = ComboBox7
    Range("E" & 6).Value = TextBox3
    Range("F" & 6).Value = TextBox4
    Range("G" & 6).Value = ComboBox8
    Range("H" & 6).Value = ComboBox9
    Range("I" & 6).Value = ComboBox10
End If
' Affiche une boîte de message
'MsgBox ("Signature prévisionnelle ajouter") 'Vous informant que l'acte est inséré dans votre tableau Excel.
'Inserer une nouvelle ligne après Valider
'Rows("6:6").Insert Shift:=xlDown
Unload Me ' Vide et ferme l'Userform ( formulaire)
AJOUT_PREVISION.Show 'Affiche le  formulaire
End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour,
[Tableau1440] ??????

Une piste pour le bouton "Valider" de l'userform "AJOUT_PREVISION"

VB:
Private Sub CommandButton1_Click()
'A ce niveau vous allez insérer le code suivant en ligne 6
If MsgBox("CONFIRMER signature prévisionnelle ?", vbYesNo, "Demande de confirmation") = vbYes Then  'condition : si oui au message
  [Tableau1440].ListObject.ListRows.Add (1)

  Range("A6").Value = ComboBox2
  Range("B6").Value = TextBox1
  Range("C6").Value = ComboBox1
  Range("D6").Value = ComboBox7
  Range("E6").Value = TextBox3
  Range("F6").Value = TextBox4
  Range("G6").Value = ComboBox8
  Range("H6").Value = ComboBox9
  Range("I6").Value = ComboBox10

  ComboBox2 = ""
  TextBox1 = ""
  ComboBox1 = ""
  ComboBox7 = ""
  TextBox3 = ""
  TextBox4 = ""
  ComboBox8 = ""
  ComboBox9 = ""
  ComboBox10 = ""
End If
End Sub

Bon courage
 

Dranreb

XLDnaute Barbatruc
J'ajouterai que si ça vous intéresse j'ai des modules de service qui s'occupent de presque tout, pour peu que dans l'UserForm_Initialize on associe chaque titre du tableau à chaque contrôle devant rechercher ou afficher l'information.
 

Nosma

XLDnaute Nouveau
Bonjour.
Plutot qu'un Ws As Worksheet, déclarez donc un LOt As ListObject, que vous initialiserez
Set LOt = Worksheets("PREVISION DE SIGNATURE").ListObjects(1)
Puis
Me.ComboBox1.List = LOt.ListColumns("CLERC").DataBodyRange.Value
Pour obtenir un RngLig As Range représentant une ligne ajoutée :
Set RngLig = LOt.ListRows.Add.Range
Personnellement le mets toujours mes valeurs prises des contrôles dans un tableau TVL que j'affecte en une fois à la RngLig.Value
Remarque: vous avez une Private Sub UserForm_Initialize() dans un module d'objet Worksheet, au lieu d'un UserForm.

j'ai pas compris ce que vous vouliez dire "Remarque: vous avez une Private Sub UserForm_Initialize() dans un module d'objet Worksheet, au lieu d'un UserForm.[/QUOTE]"
 
Dernière édition:

Nosma

XLDnaute Nouveau
Hello

avec ceci?
VB:
Private Sub CommandButton1_Click()
'A ce niveau vous allez insérer le code suivant entre les deux lignes affichées
Dim L As Integer
If MsgBox("CONFIRMER signature prévisionnelle ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
    Rows("6:6").Insert Shift:=xlDown
  
    Range("A" & 6).Value = ComboBox2 'Insère la donnée de la liste déroulante dans la colonne A
    Range("B" & 6).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
    'et à suivre....
    Range("C" & 6).Value = ComboBox1
    Range("D" & 6).Value = ComboBox7
    Range("E" & 6).Value = TextBox3
    Range("F" & 6).Value = TextBox4
    Range("G" & 6).Value = ComboBox8
    Range("H" & 6).Value = ComboBox9
    Range("I" & 6).Value = ComboBox10
End If
' Affiche une boîte de message
'MsgBox ("Signature prévisionnelle ajouter") 'Vous informant que l'acte est inséré dans votre tableau Excel.
'Inserer une nouvelle ligne après Valider
'Rows("6:6").Insert Shift:=xlDown
Unload Me ' Vide et ferme l'Userform ( formulaire)
AJOUT_PREVISION.Show 'Affiche le  formulaire
End Sub

Merci, pour le coup j'ai l'embara du choix, tous vos code VBA fonctionnent à merveilles. XD
 

Nosma

XLDnaute Nouveau
Excusez moi de prendre encore de votre temps,
jai un autre problème qui apparait, dans ce meme formulaire jai plusieurs montant a mettre (textbox 4, format monétaire) pour ensuite faire la somme de ces montants,
si je rentre pas cellule par cellule ("assiette" colonne F) la somme est comme à zéro malgré le montant affiché.
comment je doit faire?
 

Jacky67

XLDnaute Barbatruc
Excusez moi de prendre encore de votre temps,
jai un autre problème qui apparait, dans ce meme formulaire jai plusieurs montant a mettre (textbox 4, format monétaire) pour ensuite faire la somme de ces montants,
si je rentre pas cellule par cellule ("assiette" colonne F) la somme est comme à zéro malgré le montant affiché.
comment je doit faire?
RE…
A modifier
Range("F6").Value = CDbl(TextBox4)
 

Discussions similaires

Statistiques des forums

Discussions
312 172
Messages
2 085 932
Membres
103 050
dernier inscrit
HAMZA BKA