Inserer un ligne au lieu de saisie

Oui ça marche très bien merci!!!!!!!!!!!!!!

alors est ce qu'en peut insérer un ligne vide automatiquement avec la mise en forme (formulaire...) au dessous de tableau après la dernière ligne saisi .

Bonjour,

Est-ce que tu peux me donner les numéros de lignes que tu mentionnes ...

La dernière ligne saisie > serait-elle la ligne 4 ? > qui vient d'être insérée ...

Ou la ligne la plus basse où il y a de données ??
Cela aurait pour effet d'ajouter une ligne entre les données et la ligne bleue au bas !!!

ric

Alors ci ta vu le fichier en pièce joint avant modification la ligne est ajouter au bas de tableau

alors est ce que c'est possible d’insérer un ligne vide avec mise en forme a chaque fois qu'on fait l’exécution de userforme (l'ajouer)

c'est a dire code vba d'insertion d'une ligne en bas de tableau ou avant dernière ligne remplit par exemple avec la mise en forme

Bonjour,

Excuse-moi pour le délai ...

Donc > ajout d'une ligne au bas du tableau et y copier le format de la ligne précédente ...

" lgFin " sera la variable à utiliser pour écrire dans cette nouvelle ligne

Private Sub MajInventaire()
Dim QS&, n&
   With Worksheets("Inventaire")
      .Unprotect
      ' insère une ligne
      '''   .Range("Tableau1").Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
      .Rows("4:4").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

      .Rows("5:5").Copy                         ' copie la ligne en dessous
      .Rows("4:4").PasteSpecial xlPasteFormats  ' colle le format
      lgD = 4

        ' lgFin << 1er ligne vides au bas du tableau avec les formats
      lgFin = .Cells(Rows.Count, "A").End(xlUp).Row + 1        ' insère une ligne vide au bas du tableau
      .Rows(lgFin - 1 & ":" & lgFin - 1).Copy                  ' copie le ligne au dessus
      .Rows(lgFin & ":" & lgFin).PasteSpecial xlPasteFormats   ' colle le format
'...
'...
'...

ric

Bonjour

oui pas grave

alors le code ça marche pour l'insertion eT copier la mise en forme

ms il ne copier pas les formulaire dans les cellules y a t il une méthode pour copier avec formulaire existantes???

Bonjour,

Dans ton fichier exemple > il n'y a pas de formules ..

Quelles sont les colonnes qui contiennent des formules à reproduire ?

ric

oui

Alors les colonnes D , J et K

Bonjour,

Sans connaître les formules > je dois passer par des "Select" > ce qui est moins rapide > mais il n'y a que 6 cellules > 3 sur la 1re ligne et 3 sur la dernière ligne.

Dans tes formules de ces 3 colonnes > fait attention qu'il n'y ait pas de "$" devant la ligne ...

Exemple : "=$D$4" > la colonne et la ligne sont fixes ...
Exemple : "=$D4" > la colonne est fixe et la ligne va s'adapter lors de la copie dans la même colonne ...

Private Sub MajInventaire()
Dim QS&, n&
   With Worksheets("Inventaire")
      .Unprotect
      .Activate     ' active la feuille
      ' insère une ligne
      .Rows("4:4").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

      .Rows("5:5").Copy                         ' copie la ligne en dessous
      .Rows("4:4").PasteSpecial xlPasteFormats  ' colle le format

      .Range("D5").Copy        ' copie la cellule
      .Range("D4").Select      ' sélectionne la cellule
      ActiveSheet.Paste        ' colle (formule incluse)

      .Range("J5").Copy
      .Range("J4").Select
      ActiveSheet.Paste

      .Range("K5").Copy
      .Range("K4").Select
      ActiveSheet.Paste

      lgD = 4

      lgFin = .Cells(Rows.Count, "A").End(xlUp).Row + 1        ' insère une ligne vide au bas du tableau
      .Rows(lgFin - 1 & ":" & lgFin - 1).Copy                  ' copie le ligne au-dessus
      .Rows(lgFin & ":" & lgFin).PasteSpecial xlPasteFormats   ' colle le format

      .Range("D" & lgFin - 1).Copy    ' copie la cellule de la ligne au-dessus"
      .Range("D" & lgFin).Select      ' sélectionne la cellule    
      ActiveSheet.Paste               ' colle (formule incluse)

      .Range("J" & lgFin - 1).Copy
      .Range("J" & lgFin).Select
      ActiveSheet.Paste

      .Range("K" & lgFin - 1).Copy
      .Range("K" & lgFin).Select
      ActiveSheet.Paste
' ...
' ...
' ...
      

ric

Bonjour RIC

alors j'ai un petite problème c'est que la ligne est déjà dans le tableau inventaire

normalement il faut juste le modifier (mise ajour de quantité) ms regarde qui ce qu'il passe lorsque tu modifier un ligne sur transfert

Bonjour,

Un essai ...

Tu mentionnais qu'il y a des formules en colonne D, J et K > dans le fichier exemple > il n'y en a pas > j'ai donc placé des formules qui ne conviennent pas du tout à ton projet > ces formules ajoutées ne sont là que pour tester leur copie dans la ligne 4 ...

Pour l'écriture en ligne 4 via le formulaire > dis-moi si cela convient ...

ric

Bonjour RIC

alors pour bien compris le code de fichier

c'est que le transfert du quantité entre magasins

alors si le magasin destination existe déjà sur le tableau il a fait juste le mise a jour des quantités transféré (alors n'est pas insérer un ligne)

Si le magasin destination n’existe pas dans le tableau inventaire alors la nécessite une insertion d'un ligne (dans le fichier la ligne est insérer en bas du tableau)

Alors pour moi je veux juste changer la saisie en bas de tableau par l'insertion au début de tableau Tout en préservant les fonctions précédentes.est cela dans le but de faire après un tableau TCD ACTUALSER

fait un test sur le fichier si joint pour bien comprendre qui ce que je veux

cordialement

Bonjour,

Je crois que je viens de comprendre le besoin > un transfert de produit entre magasins ...

Je te reviens dès que possible ...

ric

Bonjour,

Mon interprétation du transfert de matériel entre magasins ...

L'on sélectionne un code d'article > un magasin de provenance > une quantité à transférer > un magasin de destination ...

Si le magasin de destination contient déjà une quantité de cet article > la quantité que l'on a choisi de transférer est diminuée du magasin de provenance (colonne K "Sorties") et cette quantité est ajoutée au magasin de destination (colonne J "Entrées") ...

Les colonnes J et K ont des valeurs > pas des formules ...

La colonne D contient une formule qui additionne sur une ligne > la valeur de la colonne C plus la valeur de la colonne J et soustrait la valeur de la colonne K > ce qui donne la quantité du stock actuel pour cet article de ce magasin.

Si le magasin de destination n'est pas trouvé ou qu'il ne contient pas cet article > une ligne est insérée en ligne 4 de la feuille et les informations y sont inscrites.

Le stock initial d'un article pour un magasin donné correspond au nombre d'articles qui a été transféré à la création de cet article pour ce magasin > cette valeur ne devrait plus être modifiée ...

Espérant avoir bien compris le fonctionnement de ce tableau ...

ric

Oui c'est génial merci beaucoup cher RIC ça marche très bien

Alors RIC est ce que vous avez une idée pour cela :

Alors j'ai fait un code pour remplir le combobox selon l’utilisateur comme ceci :

Sub autoriser(Utilisateur As String)
Dim Col As Byte, i As Byte, lig As Integer

With Sheets("Autorisation") 'dans la feuille paramétrage
    'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
    Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
    'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
    lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
   UF_Entrées.TB_Magasin.Clear
    UF_Sorties.TB_Magasin.Clear
    Transfer.ComboBox1.Clear
    For i = 3 To Col
        If UCase(.Cells(lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
         UF_Entrées.TB_Magasin.AddItem .Cells(1, i).Value
           UF_Sorties.TB_Magasin.AddItem .Cells(1, i).Value
           Transfer.ComboBox1.AddItem .Cells(1, i).Value
        End If
    Next i
End With
End Sub

image de tableau Autorisation

capture tableau autorisation

Mais le problème c'est quelque fois (et surtout a la première exécution de l userform ) le combobox a doubler les valeurs comme dans l'image c'est dessous

et lorsque j'ai quitter l userforme et entrer a la doudouisme fois il me donne le combobox sans doublons

valeur en double

Dans cet exemple l’utilisateur est ADMIN

Et merci d'avance

Bonjour,

Quand il y a doublage des items dans un combobox > il arrive souvent que le code passe 2 fois pour alimenter le combobox et il manque un combobox.clear pour vider avant de recharger le combobox ...

Ton nouveau code alimente le Combobox1 > en changeant d'item dans la "CB_Pièce" > il y a aussi alimentation du Combobox1 ...

Il est possible que ce soit un conflit entre les 2 ...

Pour trouver > place un point d'arrêt (touche F9) sur la ligne With Sheets("Autorisation") ...

Puis une fois le traitement lancé > il va s'arrêter sur le point d'arrêt > la touche F8 va faire avancer le code une ligne à la fois > l'on peut aussi en même temps surveiller la valeur des variables en plaçant le curseur de souris au-dessus des variables > une infobulle donnera la valeur de la variable survolée ...

Si tu ne trouves pas > ajoute un point d'arrêt au début de Sub CB_Pièce_Change() > sur  With ComboBox1  ...

Sinon, fourni le fichier avec le nouveau code et la feuille "Autorisation" > je vais tenter de déboguer la chose ...

ric

Bonjour

alors j'ai essayer de joindre le fichier même problème très lourd

Bonjour,

Sur une copie de ton fichier > ne conserve que 5 ou 10 lignes des feuilles "Intentaire" et "Transfert" > cela devrait être suffisant pour le dépannage ...

Aussi > fait CTRL+FIN > cela va te permettre de trouver les lignes inutiles sous les données ainsi que les colonnes inutiles à droites des données ...

Il suffit de sélectionner les lignes inutiles et de les supprimées > idem pour les colonnes ...

ric

J'ai fait toutes les possibilité pour joindre le fichier ms malheureusement ça marche pas

Rechercher des sujets similaires à "inserer ligne lieu saisie"