Insertion d'une ou plusieurs lignes via userform

vassili

XLDnaute Occasionnel
Bonjour,

Voila j'ai un petit problème qui est le suivant. J'arrive a ajouter des lignes en fonction de combien j'en veut mais j'aimerais faire reussir:

- a insérer les informations des diverses combobox à la première ligne vide avec la prise en compte du nombre de ligne à insérer dans la textbox du userform.

Et aussi:

- a insérer les divers numéros de produits c'est à dire le produit de type 4, si je veut commander 5 produits de type 4 il faut que cela puisse m'afficher les numéro de produits 5, 6, 7, 8 et 9 (c'est plus compréhensible lorsque l'on a le fichier sous les yeux).

Je vous ais ci-joint le fichier,

Regarde la pièce jointe Test.xls

Si vous avez des questions n'hésiter pas :)

Cordialement
 

Pièces jointes

  • Test.xls
    36 KB · Affichages: 280
  • Test.xls
    36 KB · Affichages: 276
Dernière édition:

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

bonjour bebere,

sa marche bien cette fois ci ^ merci, j'aurais juste voulu savoir dans ce moceau de code:

Code:
.Cells(1, .Cells(1, 256).End(xlToLeft).Column + 1) = "vente" & C
.Cells(1, .Cells(1, 256).End(xlToLeft).Column + 1) = "achat" & C

Par contre, j'aimerais que vente et achat ne soit pas les valeurs par défault car les entetes pourraient avoir des noms différents les unes des autres à l'avenir.

Par exemple pour les noms d'entetes sa sera Piece 1246-vente, Piece 1246-achat, Piece 2347-vente, Piece 2347-achat....

a bientot,

Vassili
 

Bebere

XLDnaute Barbatruc
Re : Insertion d'une ou plusieurs lignes via userform

bonjour Vassili
tu ajoutes ce code dans un module

Function ExtraitNum(Chaîne)
Dim Mot As String, C As Integer, X As Integer
Mot = "########"

For X = 1 To Len(Chaîne)
If Mid(Chaîne, X, 1) Like "#" Then
C = C + 1
End If
Next

Mot = Left(Mot, C)
For X = 1 To Len(Chaîne)
If Mid(Chaîne, X, 4) Like Mot Then
ExtraitNum = Mid(Chaîne, X, 4)
End If
Next

End Function

dans module4 tu mets ces 2 lignes à la place des 2 existantes(parties en commentaires,càd après ')

X = ExtraitNum(.Cells(1, DerCol)) 'Mid(.Cells(1, DerCol), 6) + 1 'extrait le numeric de la dernière colonne +1
Y = ExtraitNum(Tbl(1, UBound(Tbl, 2))) 'Mid(Tbl(1, UBound(Tbl, 2)), 6) 'extrait le numeric de la dernière colonne de tbl
à bientôt
 

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

Bonjour bebere,

J'aurais voulu savoir ce que je remplace pour les # juste une précision pour cette partie de code:

Code:
Mot = "########"

For X = 1 To Len(Chaîne)
If Mid(Chaîne, X, 1) Like "#" Then
C = C + 1
End If
Next

Merci et a bientot

vassili
 

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

bonjour bebere,

Il y a une rectification sur les entetes, en faite je pense qu'il serait plus judicieux de copié toute les entetes et les comparer a celle déjà présente sa sera plus simple si cela est possible car la le code fais une identification de plusieurs mots qui sont similaires comme suit:

Code:
        Mot = .Cells(1, DerCol)
        Motd = Mid(Mot, 1, InStr(Mot, " "))    'extrait piece
        Motf = Mid(Mot, InStrRev(Mot, "-"))     'extrait achat
        Mot = .Cells(1, DerCol - 1)
        Motf1 = Mid(Mot, InStrRev(Mot, "-"))     'extrait vente

Merci et à bientôt,

Vassili
 

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

Re-bonjour bebere,

Le code que tu avais utilisé pour l'update me convenait parfaitement sauf qu'il n'ajoutait pas de colonne en plus si le fichier exemple contenait plus de colonnes, est ce qu'il serait possible de rajouter une boucle qui permet de rajouter ces colonnes sur ce code ci-dessous?:

Code:
Sub UpdateDataBis()
    Dim Ld As Long, Lf As Long, C As Integer
    Dim Wb As Workbook, Fichier As String

    Fichier = Application.GetOpenFilename

    If Fichier = "" Then Exit Sub

    Set Wb = Workbooks.Open(Fichier)

    Application.ScreenUpdating = False

    With Wb.ActiveSheet
        Ld = .Cells.Find("PDS").Row
        Col = .Cells(Ld, 256).End(xlToLeft).Column
        Lf = .Cells(65536, 1).End(xlUp).Row
        Tbl = .Range(.Cells(Ld, 1), .Cells(Lf, Col))
    End With

    Wb.Close savechanges = False

    With ThisWorkbook.ActiveSheet
        Li = .Cells(65536, 1).End(xlUp).Row    ' + 1
        Col = .Cells(4, 256).End(xlToLeft).Column
        For C = 1 To UBound(Tbl, 2)
            Set cel = .Rows(4).Find(Tbl(1, C))
            If Not cel Is Nothing Then
                For L = 2 To UBound(Tbl, 1)
                    .Cells(Li + L - 1, cel.Column) = Tbl(L, C)
                    If Tbl(L, C) = "" Then .Cells(Li + L - 1, cel.Column) = 0
                Next
            Else
                Col = Col + 1
                If Col > UBound(Tbl, 2) Then Exit For
                .Cells(4, Col) = Tbl(1, C)
                For L = 5 To Li
                .Cells(L, Col) = 0
                Next
                For L = 2 To UBound(Tbl, 1)
                    .Cells(Li + L - 1, Col) = Tbl(L, C)
                    If Tbl(L, C) = "" Then .Cells(Li + L - 1, Col) = 0
                Next
            End If
        Next

        If Col > UBound(Tbl, 2) Then
            Lf = .Cells(65536, 1).End(xlUp).Row
            For C = UBound(Tbl, 2) + 1 To Col
                For L = Li + 1 To Lf
                    .Cells(L, C) = 0
                Next
            Next
        End If

    End With

Merci et à bientot,

Vassili
 

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

Bonjour bebere,

J'ai repris le code que je t'ai poster ci-dessus, car j'ai changer de manière définitive le nom des entetes (c'est pour cela que j'ai repris celui-ci). Il marche trés bien sauf que:

Si je rajoute des colonnes avec des chiffres dans le fichier "exemple" l'insertion bloque àprés la colonne qui n'est pas mise à jour dans l'ensemble des colonnes.

J'aimerais que dans les colonnes qui sont déjà importées dans fichier de base on puisse importées de nouvelles colonnes entre les colonnes qui sont déjà dans cette même base.

Je t'envoie les deux fichiers

Ce lien n'existe plus
Ce lien n'existe plus

Merci beaucoup et à bientot,

Vassili
 

Bebere

XLDnaute Barbatruc
Re : Insertion d'une ou plusieurs lignes via userform

bonjour Vassili
dans module4 updatedatabis,tu as la possibilité de faire un tri sur ligne 1
à bientôt
 

Pièces jointes

  • TestVassiliV7.zip
    37.7 KB · Affichages: 88
  • TestVassiliV7.zip
    37.7 KB · Affichages: 93
  • TestVassiliV7.zip
    37.7 KB · Affichages: 91

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

Bonjour bebere,

Sa marche trés bien pour l'ajout des colonnes sauf que l'ordre des colonnes à changer.
En effet, lorque j'importe le fichier exemple il doit y avoir l'ordre des colonne qui soit conserver pour la feuille du fichier base.
Les colonnes doivent s'importées et être dans même ordre que dans le fichier exemple.


Autre point important que je n'ai pas cité est ce qu'il est possible de mettre un inputbox pour insérer le numéro de l'année sur la colonne A du fichier base avec la zone de séléction qui prend en compte toute les lignes qui viennent d'étre importé.
Ou alors est ce qu'il serait pas plus simple de faire cela dans le fichier "exemple"?

Regarde la pièce jointe Exemple (1) (1).xls

Merci et à bientôt,

Vassili
 

Pièces jointes

  • Exemple (1) (1).xls
    33.5 KB · Affichages: 114
  • Exemple (1) (1).xls
    33.5 KB · Affichages: 121
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Insertion d'une ou plusieurs lignes via userform

Vassili
dans le fichier exemple tu as un code qui s'exécute à l'ouverture du classeur
il se trouve dans thisworkbook évènement workbook_open
dans testvassiliv7 une inputbox au début du code et un tri à la fin
à bientôt
 

Pièces jointes

  • FilesVassili.zip
    50.9 KB · Affichages: 83

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

bonjour bebere,

Le trie ne doit pas se faire de façon alphabétique mais suivant l'ordre des colonnes importées, elles ne doivent pas changer de sens. Le fichier exemple que je te joint ci-dessous est l'exemple type de ce qu'il faut importé.


Regarde la pièce jointe Exemple (1) (1).xls

Pour l'inputbox il n'est pas nécessaire de mettre la date juste le numéro de l'année suffit.

Merci et a bientot,

Vassili
 

Pièces jointes

  • Exemple (1) (1).xls
    33.5 KB · Affichages: 115
  • Exemple (1) (1).xls
    33.5 KB · Affichages: 113
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Insertion d'une ou plusieurs lignes via userform

bonjour Vassili
la dernière?
à bientôt
 

Pièces jointes

  • TestVassiliV7.zip
    44.7 KB · Affichages: 94
  • TestVassiliV7.zip
    44.7 KB · Affichages: 92
  • TestVassiliV7.zip
    44.7 KB · Affichages: 98

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

bonjour bebere,

C'est bon c'est la dernière ^^ je te remercie beaucoup de ta disponiblité pour répondre à toute mes questions et encore merci de m'avoir aidé.

a bientot

Vassili
 

vassili

XLDnaute Occasionnel
Re : Insertion d'une ou plusieurs lignes via userform

bonjour bebere,

En fait sa marche pas tout à fait comme prévu pour la partie update j'ai un problème consernant toujours cette ordre des colonnes.
Le problème est d'origine, du dernier fichier que tu m'a envoyé. En effet, l'ordre des colonnes est un peu mélangé lorsque j'ajoute ou supprime des colonnes lors d'une importation. J'ai tester avec le fichier exemple et TestVassiliV7 (dernier fichier base), et même la sa ne marche pas comme prévu (je me suis trop emballé :/).
Le but était d'avoir les colonnes de départ qui sont stockés dans la base + les colonnes d'arrivées c'est à dire les colonnes qui ont été importées, tout en gardant l'ordre définie via entre deux fichiers:

Ensuite j'ai un autre et ultime soucis sur ce fichier c'est que si je veux importer des données d'années antérieures à celle qui sont déjà présente dans la feuille.

Ainsi, ces données se mette à la suite alors que j'aimerais que sa compare si l'année et inférieur ou supérieur aux années précédement importé dans la base pour sa se mette au bonne endroit.

Pour les entetes je te montre via un exemple,

Exemple:

L'odre des colonnes dans la base:

Année
amortisseur Smlf type 1
amortisseur Smlf type 2
frein Limdh type 1
frein Limdh type 2
Cable classe A type 1
Cable classe A type 2
Cable classe B type 1
Cable classe B type 2

L'ordre des colonnes aprés la feuille importé:

Année
amortisseur Smlf type 1
amortisseur Smlf type 2
frein Limdh type 1
frein Limdh type 2
Cable classe A type 1
Silent block Amola type 1
Silent block Amola type 2
Cable classe A type 2
Cable classe B type 1
Cable classe B type 2
Fusible A hkl
Fusible B hkl

Dans l'ordre souhaité:


Année
amortisseur Smlf type 1
amortisseur Smlf type 2
frein Limdh type 1
frein Limdh type 2
Silent block Amola type 1
Silent block Amola type 2
Cable classe A type 1
Cable classe A type 2
Cable classe B type 1
Cable classe B type 2
Fusible A hkl
Fusible B hkl

Voila je te remercie et à bientôt,

Vassili
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Insertion d'une ou plusieurs lignes via userform

bonjour Vassili
changé et ajout d'un tri croissant sur colonne A
à bientôt
 

Pièces jointes

  • TestVassiliV7.zip
    40.6 KB · Affichages: 97
  • TestVassiliV7.zip
    40.6 KB · Affichages: 99
  • TestVassiliV7.zip
    40.6 KB · Affichages: 90

Discussions similaires