recopie suivant saisie en VBA

  • Initiateur de la discussion Initiateur de la discussion bruno66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bruno66

XLDnaute Occasionnel
suite à un post ancien, pour lequel , Jean Pierre , m'avait apporté son secours,toujours une pensée pour lui depuis son départ quand je viens ici , je recherche , en code vba, comment realiser cela, à cause d'un recalcul toujours trop long à chaque fois qu'une ligne est supprimé ou utilisation du filtre auto...
si quelqu'un ou quelqu'une peut m'aider, surtout vu le nombre de colonne, en reference, je souhaiterais que l'on m'explique comment faire, avec l'exemple du fichier ci-joint, que j'essaierais ensuite d'adapter a mon problème , en reel , sur le fichier que j'utilise , tous les jours, dans le cadre de lmon logiciel de gestion sous excel que j'essaie de creer actuellement pour gerer du stock matière , très spécifique , à mon cas .
merci d'avance de votre aide je vous joint le fichier , que j'avais de Jean Pierre à ce moment , et qui fonctionnait très bien , sous la formule..
 

Pièces jointes

Re : recopie suivant saisie en VBA

Bonsoir Bruno,
je ne veux pas faire la fine gueule, mais un petit signe de politesse à l'ouverture d'un post serait apprécié, et j'imagine que je ne suis pas le seul que ça rejoint.

Ceci dit, voici un essai en VBA. À mettre dans un module traditionnel.

VB:
Sub test()

'Déclare les variables
Dim DerniereLigne As Long, i As Long, La_ligne_ref As Long
Dim La_Colonne_Ref As Integer, La_Colonne_QT As Integer, La_Colonne_Remise As Integer
Dim FT, Base, Col, Lig
Dim Reference As String, Depot As String, Gamme As String, Design As String
Dim Quantite As Long, Remise As Long
Dim Prix As Single, Total As Single, Px_Remise As Single

'Gèle l'écran pendant l'opération
Application.ScreenUpdating = False

'Set les feuilles dans des variables
Set FT = Sheets("inventaire VBA ")
Set Base = Sheets("base ")

FT.Select

'On va aller fiter les bons numéros de colonnes dans des variables. Comme ça, si jamais tu ajoutes ou enlève
'des colonnes, ça va fonctionner quand même.
Set Col = Range("A1:AA1").Find("reference ", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
    La_Colonne_Ref = Col.Column
Else
    Exit Sub
End If

Set Col = Range("A1:AA1").Find("quantité", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
    La_Colonne_QT = Col.Column
Else
    Exit Sub
End If

Set Col = Range("A1:AA1").Find("remise ", LookIn:=xlValues, LookAt:=xlWhole)
If Not Col Is Nothing Then
    La_Colonne_Remise = Col.Column
Else
    Exit Sub
End If

'Set la dernière ligne de l'onglet FT dans une variable
DerniereLigne = Cells(65536, La_Colonne_Ref).End(xlUp).Row

'On va clearer ton tableau
Range(Cells(2, 1), Cells(DerniereLigne, 2)).ClearContents
Range(Cells(2, 4), Cells(DerniereLigne, 5)).ClearContents
Range(Cells(2, 7), Cells(DerniereLigne, 7)).ClearContents
Range(Cells(2, 9), Cells(DerniereLigne, 9)).ClearContents

'Pour chacune des références de ton tableau, on va aller chercher l'information relative dans le tableau
'de l'onglet Base.
For i = 2 To DerniereLigne
    FT.Select
    Reference = Cells(i, La_Colonne_Ref).Value 'Set la référence dans une variable
    Quantite = Cells(i, La_Colonne_QT).Value 'Set la quantite dans une variable
    Remise = Cells(i, La_Colonne_Remise).Value 'Set la remise dans une variable
    
    Base.Select
    'On va aller trouver la bonne ligne de travail
    Set Lig = Range("C1:C65536").Find(Reference, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Lig Is Nothing Then
        La_ligne_ref = Lig.Row
    Else
        GoTo Continuer
        'Votre Plan B
    End If
    
    'On entre les informations désirées dans des variables
    Depot = Cells(La_ligne_ref, 1).Value
    Gamme = Cells(La_ligne_ref, 2).Value
    Design = Cells(La_ligne_ref, 3).Value
    Prix = Cells(La_ligne_ref, 5).Value
    Total = Prix * Quantite
    If Prix = 0 Then
        Px_Remise = 0
    Else
        Px_Remise = Total * Remise / 100
    End If
    
    FT.Select
    'On vient inscrire dans l'onglet FT l'information qu'on a trouvé dans l'onglet Base
    Cells(i, La_Colonne_Ref - 2).Value = Depot
    Cells(i, La_Colonne_Ref - 1).Value = Gamme
    Cells(i, La_Colonne_Ref + 1).Value = Design
    Cells(i, La_Colonne_Ref + 2).Value = Prix
    Cells(i, La_Colonne_Ref + 4).Value = Total
    Cells(i, La_Colonne_Ref + 6).Value = Px_Remise
    
    
Continuer:

    Reference = ""
    Quantite = 0
    Remise = 0
    Depot = ""
    Gamme = ""
    Design = ""
    Prix = 0
    Total = 0
    Px_Remise = 0
Next i

Set FT = Nothing
Set Base = Nothing

End Sub

Cordialement,

Étienne
 
Re : recopie suivant saisie en VBA

bonsoir ,et excuse moi Etienne pour l'oubli involontaire de ma part du Bonjour, ce n'est pas dans mes habitudes.
j'ai essayé en tout sens de faire fonctionner ta formule, en vain,
mon inexperience du vba doit y être pour quelque chose, je presume.
donc, j'ai remis un fichier modifier, j'ai essayer de mettre ta formule dans le code dsans succès, une erreur de ma part surement,
si tu pouvais le donner plus d'explication, ,merci d'avance, et je sais que tu en a déjà mis pas mal ,des explications
merci d'avance, Etienne et autre forumeurs
a vous lire , bonne soirée
 

Pièces jointes

Re : recopie suivant saisie en VBA

Salut Bruno,
voici un exemple avec les boutons.

Voici le fonctionnement.

Tu peux ajouter des référence dans ton onglet inventaire VBA tant que tu veux en cliquant sur le bouton "Ajouter une référence"

Tu peux supprimer le dernier ajout de référence en cliquant sur le bouton "Supprimer la dernière référence"

Tu peux remplir le tableau avec les informations de l'onglet base en cliquant sur le bouton "Remplir le tableau"

Tu peux vider le tableau en cliquant sur le bouton "Vider le tableau"

En espérant que ça réponde à ton besoin.

Cordialement,

Étienne

PS : Au moment de recopier la macro dans le module, tu n'avais pas copier jusqu'au "End sub". C'est pourquoi tu avais une erreur.
 

Pièces jointes

Dernière édition:
Re : recopie suivant saisie en VBA

re bonjour Etienne et autre forumeurs,j'ai essayé, de rajouter , dans le module , le morceau du code, mais sans succès, par contre , pour les boutons, je garde, afin de pouvoir, eventuellement pour une autre application , savoir comment réaliser, mais , pour en revenir, à mon sujet, sans bouton, cela ne fonctionne pas , si quelqu'un peut m'aider, d'après mon premier poste et le post de Etienne merci d'avance, toujours un petit souci ,réellement
 
Re : recopie suivant saisie en VBA

Bonsoir,

Ben, 20 virgules, dans une seule phrase, moi je dis "Respect"....

Honnêtement, Bruno, ce n'est pas que ton problème nous indiffère...

Seulement, fais un effort dans la rédaction...

C'est illisible....

@ +
 
Re : recopie suivant saisie en VBA

Re bonjour le forum

Je salue "bhbh au passage", qui doit être professeur de français.🙂🙂🙂

J'ai écrit qu'Etienne m'avait mis la formule en vba part rapport à mon fichier de démarrage.

Or en l'essayant, je ne suis pas arrivé à la faire fonctionner dans mon fichier.😕😕
Donc et par ce fait,😉 Etienne a joint à son 2eme post , un fichier avec des boutons de commande.( ce qui ne correspond pas à ma demande initiale ,mais que je conserve au cas ou!!)😱😱

Donc par ma nouvelle demande, je souhaiterais que quelqu'un me fasse fonctionner les formules du début sur mon fichier et cela sans bouton .🙂🙂

Quand j'aurais compris comment cela fonctionne, je pourrais appliquer les modifications dans un autre fichier final (qui lui est en formules excel étirés dans mes colonnes).

Merci d'avance pour le temps que vous me consacrerez .

🙂🙂🙂Ps: pour "bhbh",corrige vite mes fautes!!!😀😀
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour