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

Microsoft 365 Problème de dernière ligne dans un tableau

yassine.013

XLDnaute Nouveau
Bonjour à tous

Je suis en alternance dans une entreprise de production des pièces d’avion en effet j'ai une base de donnée que j'ai mis dans un tableau et que j'incrémente avec un Userforme standard pour la remplire.

Et j’ai 3 feuilles la première « Formulaire de la faf » il y’a un bouton ça s’appelle Nouvelle faf en cliquant dessus ça s’affiche le formulaire en le remplissant ils renvoient au tableau de la deuxième feuille « Validation ». Dans cette dernière y’a un bouton Valider il copie la dernière ligne et la colle dans la dernière ligne du tableau dans la troisième feuille « source ».

J’ai deux soucis le premier est dans le bouton de commande « Ajouter dans une base » qui se trouve dans le formulaire nouveau Faf

Quand je clique dessus la ligne s’ajoute n’importe où sur le tableau alors que je veux ligne en dessous d’une ligne ou quand je remplis à nouveau le formulaire la nouvelle ligne écrase l’ancienne ligne

Le deuxième souci est dans la feuille validation dans le bouton valider Je souhaite récupérer à chaque fois la dernière ligne du tableau copier ses valeurs et les coller dans le tableau à sa dernière ligne de feuille source.
 

Pièces jointes

  • Faf 15.12.xlsm
    100 KB · Affichages: 7

vgendron

XLDnaute Barbatruc
Hello

essaie ce code en lieu et place de l'existant

VB:
'Bouton d'ajouter à la base '
Private Sub ab_Click()
On Error Resume Next
Dim ligne As Integer
With Sheets("Validation")
    .Activate 'pas obligatoire
    ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    Set cellule = .Range("A" & ligne)
    cellule.Value = TextBox1.Value
    cellule.Offset(0, 1).Value = TextBox2
    cellule.Offset(0, 2).Value = TextBox3
    cellule.Offset(0, 3).Value = TextBox4
    cellule.Offset(0, 4).Value = TextBox5
    cellule.Offset(0, 5).Value = TextBox6
    cellule.Offset(0, 6).Value = TextBox7
    cellule.Offset(0, 7).Value = ComboBox1
    cellule.Offset(0, 8).Value = TextBox8
    cellule.Offset(0, 9).Value = TextBox9
    cellule.Offset(0, 10).Value = TextBox10
    cellule.Offset(0, 11).Value = TextBox11
    cellule.Offset(0, 12).Value = TextBox12
    cellule.Offset(0, 13).Value = TextBox13
    cellule.Offset(0, 14).Value = TextBox14
    cellule.Offset(0, 15).Value = TextBox15
    cellule.Offset(0, 16).Value = TextBox16
    cellule.Offset(0, 17).Value = TextBox17
    cellule.Offset(0, 18).Value = TextBox18
    cellule.Offset(0, 19).Value = TextBox19
    cellule.Offset(0, 20).Value = TextBox20
    cellule.Offset(0, 21).Value = ComboBox2
    cellule.Offset(0, 22).Value = TextBox20
End With

End Sub
 

yassine.013

XLDnaute Nouveau
Je te remercie beaucoup tu m'a sauvé la vie !!
premier problème résolu il me reste le deuxième problème
 

vgendron

XLDnaute Barbatruc
Voir en PJ les quelques améliorations effectuées sur ton code

ainsi qu'un lien qui pourrait t'etre utile pour comprendre les tables structurées

Note: pour quitter le formulaire. il faut que les 17 premiers TextBox soient remplis?? bizarre..
d'habitude. on utilise le bouton quitter pour sortir et mettre fin à l'appli..?
 

Pièces jointes

  • Faf 15.12.xlsm
    45.6 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Bonjour @yasmine et Vincent

Juste en passant une petite erreur d'inattention dans le code de Vincent :

cellule.Offset(0, 20).Value = TextBox20
cellule.Offset(0, 21).Value = ComboBox2
cellule.Offset(0, 22).Value = TextBox20

A remplacer par :

cellule.Offset(0, 20).Value = TextBox20
cellule.Offset(0, 21).Value = ComboBox2
cellule.Offset(0, 22).Value = TextBox21



@Phil69970
 

yassine.013

XLDnaute Nouveau
Je te remercie beaucoup, tu es un génie en effet je voulais pas qu'ils quittent le formulaire avant de remplir quelques champs essentiels.
et je souhaite savoir si ta un code pour bloquer l'accès a la feuille source(on pourra pas remplir au clavier) de la colonne A jusqu'à W si c'est possible svp
 

vgendron

XLDnaute Barbatruc
Plutot que de les empecher de quitter le formulaire, il vaudrait mieux les empecher de valider la saisie tant que les infos obligatoires (celles avec un atérisque, je présume) sont incomplètes: non??

pour empecher l'accès à la feuille source
soit tu la masques, soit tu la protège.. attention, il faudra la déprotéger pour que le code VBA puisse copier dessus (le code peut se charger de déprotéger et reprotéger)..
 

Phil69970

XLDnaute Barbatruc
Re

Vincent

Si j'ai compris ton code dans les cas ci dessous la re protection ne se fait pas puisque l'on sort avant



Perso je ferais plutôt

VB:
Private Sub CommandButton1_Click()
Dim CellCible As Range

ActiveSheet.Unprotect 'on déprotège la feuille
On Error Resume Next
Set CellCible = Application.InputBox("Sélectionnez la cellule à modifier", Type:=8)
If CellCible.Count <> 1 Then
    MsgBox "Veuillez ne sélectionner qu'une seule cellule"
    ActiveSheet.Protect 'on reprotège la feuille
    Exit Sub
End If

If CellCible.ListObject.Name = "" Then
    MsgBox "la cellule n'appartient pas à la table"
    ActiveSheet.Protect 'on reprotège la feuille
    Exit Sub
End If

CellCible = InputBox("vous pouvez modifier votre cellule")

ActiveSheet.Protect 'on reprotège la feuille
End Sub




@Phil69970
 

yassine.013

XLDnaute Nouveau
Merci beaucoup !!!
 

Discussions similaires

  • Question
Microsoft 365 Tableau
Réponses
24
Affichages
908
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…