XL 2021 modifier lignes

  • Initiateur de la discussion Initiateur de la discussion AIGOIN
  • 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 !

AIGOIN

XLDnaute Junior
Bonjour,
Dans le fichier joint, dans base, userform5 (DECAGEMENT) peux modifier une ligne dans la feuille éleveur que j'ai sélectionné combobox4 Souche en fonction de l'extraction vente que j'ai effectué avec cbo1 et cbo2.
Est-il possible de modifier avec une macro les lignes sélectionnées V (vente) issues de l'extraction feuille DE_V par exemple éleveur 1113 modifier toutes les lignes vendues dans la feuille de l'éleveur qui ont encore un P (oiseau présent).
J'effectue actuellement cela avec la macro modifier mais ligne par ligne je souhaiterai l'effectuer avec une macro mais je n'y arrive pas !!!!!
Merci pour votre aide
Alain
 

Pièces jointes

Bonjour

euh.. c'est pas très clair.. je ne comprend pas de quelle ligne tu parles, ni combos;....;;
que veux tu faire exactement??
Je veux modifier, par exemple dans la feuille éleveur 1113 les lignes 1 et 2 n'ont pas été vendues présence du P mais dans la feuille extraction de cet éleveur DE_V les lignes 1 et 2 ont été vendues présence du V, je sais modifier ligne par ligne comme je l'ai fait dans l'userform5 mais je voudrai automatiser le principe en modifiant dans la feuille éleveur toutes les lignes avec un V dans DE_V
Suis-je un peu plus clair?
Merci
Alain
 
Je veux modifier, par exemple dans la feuille éleveur 1113 les lignes 1 et 2 n'ont pas été vendues présence du P mais dans la feuille extraction de cet éleveur DE_V les lignes 1 et 2 ont été vendues présence du V, je sais modifier ligne par ligne comme je l'ai fait dans l'userform5 mais je voudrai automatiser le principe en modifiant dans la feuille éleveur toutes les lignes avec un V dans DE_V
Suis-je un peu plus clair?
Merci
Alain
Pour donner plus de précision ce fichier est un fichier de vente d'oiseaux lors des expositions, nous vendons avec deux ordinateurs, à la inde l'exposition je regroupe les ventes sur la feuille vente mais les feuilles éleveurs sont différentes il faut donc qu'elles correspondent au oiseaux vendus par les deux ordinateurs.
 
bon en fait.. j'ai regardé ton fichier et le code..
c'est incompréhensible pour qui n'a pas fait le code.. (autrement dit.. il n'y a que toi qui peut comprendre ce que tu as codé)

==> quelques règles à suivre au plus vite
1) il faut donner des noms explicites aux macros
macro1, macro2... on ne sait pas ce que ca fait.. alors que " Enregistrer", "Modifier", Supprimer.. bah la.. pas besoin d'aller voir le code pour savoir ce que fait la macro

2) idem pour les Userform
Userform1 ==> USF_Ventes
Userform4==>USF_Certificat

et DANS les userform, mettre un nom aux controls
TextBox10 (de USF_Ventes) ==> Tbx_Souche
Combobox1 ==>Cbx_Eleveur

ca va donner beaucoup plus de clarté dans le code

==> ensuite, pour les feuilles "Eleveurs", 1131, 6001.... si tu fais un modèle.. il faut le suivre et ne pas ajouter ou supprimer de nouvelles infos
dans la PJ: j'ai revu ton modèle pour transformer le tableau en Table Structurée==> Beaucoup plus pratique pour ajouter des lignes, les modifier ou les supprimer

et j'ai "reconstruit" les 3 eleveurs sur cette base
dans le modèle, tu as une colonne "Sexe" et une colonne "Engagement" ==> j'ai ajouté une liste de validation pour ne choisir que ce qui est possible (voir feuille "Listes")
j'ai aussi fait une liste des oiseaux ==> ca évite de saisir le même oiseaux avec des fautes d'orthographe par exemple..

Regarde le code que j'ai modifié pour le Userform "USF_Vente"

j'ai mis en commentaire tout le code qui n'est associé à aucun control..
il y a meme un combobox5 qui est caché dans le formulaire;. je ne sais pas ou..
 
Dernière édition:
bon en fait.. j'ai regardé ton fichier et le code..
c'est incompréhensible pour qui n'a pas fait le code.. (autrement dit.. il n'y a que toi qui peut comprendre ce que tu as codé)

==> quelques règles à suivre au plus vite
1) il faut donner des noms explicites aux macros
macro1, macro2... on ne sait pas ce que ca fait.. alors que " Enregistrer", "Modifier", Supprimer.. bah la.. pas besoin d'aller voir le code pour savoir ce que fait la macro

2) idem pour les Userform
Userform1 ==> USF_Ventes
Userform4==>USF_Certificat

et DANS les userform, mettre un nom aux controls
TextBox10 (de USF_Ventes) ==> Tbx_Souche
Combobox1 ==>Cbx_Eleveur

ca va donner beaucoup plus de clarté dans le code

==> ensuite, pour les feuilles "Eleveurs", 1131, 6001.... si tu fais un modèle.. il faut le suivre et ne pas ajouter ou supprimer de nouvelles infos
dans la PJ: j'ai revu ton modèle pour transformer le tableau en Table Structurée==> Beaucoup plus pratique pour ajouter des lignes, les modifier ou les supprimer

et j'ai "reconstruit" les 3 eleveurs sur cette base
dans le modèle, tu as une colonne "Sexe" et une colonne "Engagement" ==> j'ai ajouté une liste de validation pour ne choisir que ce qui est possible (voir feuille "Listes")
j'ai aussi fait une liste des oiseaux ==> ca évite de saisir le même oiseaux avec des fautes d'orthographe par exemple..

Regarde le code que j'ai modifié pour le Userform "USF_Vente"

j'ai mis en commentaire tout le code qui n'est associé à aucun control..
il y a meme un combobox5 qui est caché dans le formulaire;. je ne sais pas ou..
Merci
Mais quand je vends un couple les critères ne se collent pas dans les bonnes colonnes et après la première vente je ne peux plus vendre d'autres oiseaux rien ne se passe, le certificat n'est plus rempli et la question posée reste sans réponse.
 
oui, c'est "normal"
on a du mal à s'y retrouver dans tout ce code...

en PJ
quand tu lances le formulaire de vente "USF_Ventes"
tu sélectionnes l'éleveur==> la ListBox se remplit
tu cliques directement sur une ligne de la Listbox ==> les infos se mettent dans les 9 textbox (le combo pour selectionner la ligne ne sert plus.. ou presque)
quand tu fais la vente (clic sur bouton)
les infos sont mises dans la feuille "Ventes" et dans la feuille "Certificat"

pour la question posée.. désolé.. c'est toujours pas clair..
je pense qu'il y a d'abord un travail de purge de ton code à faire, et de modification comme conseillé plus haut..
 
oui, c'est "normal"
on a du mal à s'y retrouver dans tout ce code...

en PJ
quand tu lances le formulaire de vente "USF_Ventes"
tu sélectionnes l'éleveur==> la ListBox se remplit
tu cliques directement sur une ligne de la Listbox ==> les infos se mettent dans les 9 textbox (le combo pour selectionner la ligne ne sert plus.. ou presque)
quand tu fais la vente (clic sur bouton)
les infos sont mises dans la feuille "Ventes" et dans la feuille "Certificat"

pour la question posée.. désolé.. c'est toujours pas clair..
je pense qu'il y a d'abord un travail de purge de ton code à faire, et de modification comme conseillé plus haut..
ok j'ai compris la vente
Le certificat est un document à remettre à l'acheteur il est unique et son numéro change à chaque nouvel acheteur
Quant à ma question il suffit dans mon premier fichier dans décagement de faire une extraction vente pour 1113 puis ouvrir la feuille 1113 et ma question est dans les deux listbox extraction vente de l'éleveur 1113 et la feuille d'engagement de l'éleveur 1113 il faut que les lignes vendues dans DE_V avec le V soient identiques dans feuille éleveur
Merci pour les modifications apportées
 
pour le formulaire 5
ton code est totalement incohérent dès l'activate..
tu définis 3 fois le nombre de colonnes, leur taille et leur nom

meme en "nettoyant", il y a encore un bloc complet redondant.. regarde ci-dessous

VB:
Private Sub UserForm_Activate()
Dim d1 As Object
Dim d2 As Object
Dim d3 As Object
Dim i As Integer
Dim ws As Worksheet
 
    With ListBox1
        .ColumnCount = 9
        .ColumnWidths = "40;90;230;70;60;60;60;60;40"
        .Column = Array("Ligne", "Souche", "Dénomination", "Bague", "Année", "Sexe", "Prix", "Souche2", "Destination")
    End With
    With ListBox2
        .ColumnCount = 9
        .ColumnWidths = "40;90;230;70;60;60;60;60;40"
    End With
    With ListBox3
        .ColumnCount = 9
        .ColumnWidths = "40;90;230;70;60;60;60;60;40"
    End With
    

    '****************************************************************
    Set d1 = CreateObject("Scripting.Dictionary")
    Set d2 = CreateObject("Scripting.Dictionary")
    Set d3 = CreateObject("Scripting.Dictionary")
    Set Fs = ThisWorkbook.Worksheets("vente")
    Set F1 = ThisWorkbook.Worksheets("DE_V")
    Set F2 = ThisWorkbook.Worksheets("DE_P")
        
    'Sheets("Base").Activate
    Tb = Fs.Range("A2:I" & Fs.Range("A" & Rows.Count).End(xlUp).Row).Value
    For i = 2 To UBound(Tb) 'pourquoi à partir de 2? - Cette boucle peut créer x fois la meme clé, juste pour la vider...
        d1(Tb(i, 2)) = ""  
        d2(Tb(i, 9)) = ""
    Next i

    If d1.Count > 0 Then Me.ComboBox1.List = d1.keys
    If d2.Count > 0 Then Me.ComboBox2.List = d2.keys
    Me.ListBox2.List = Tb
    '****************************************************************

    Tb1 = ActiveSheet.Range("A11:I" & Fs.Range("A" & Rows.Count).End(xlUp).Row).Value '==> l'active sheet, c'est la feuille BASE...???
    For i = 11 To UBound(Tb1)
        d3(Tb1(i, 9)) = ""
    Next i
    If d3.Count > 0 Then Me.ComboBox5.List = d3.keys
    Me.ListBox3.List = Tb1
        
    '****************************************************************
    'pourquoi refaire tout ce bloc d'instructions?
    Set d1 = CreateObject("Scripting.Dictionary")
    Set d2 = CreateObject("Scripting.Dictionary")
    Set Fs = ThisWorkbook.Worksheets("vente")
    Set F1 = ThisWorkbook.Worksheets("DE_V")
    
    
    Tb = Fs.Range("A2:I" & Fs.Range("A" & Rows.Count).End(xlUp).Row).Value
    For i = 2 To UBound(Tb)
        d1(Tb(i, 2)) = ""
        d2(Tb(i, 9)) = ""
    Next i
    If d1.Count > 0 Then Me.ComboBox1.List = d1.keys
    If d2.Count > 0 Then Me.ComboBox2.List = d2.keys
    Me.ListBox2.List = Tb
    '****************************************************************
    
    For Each ws In ActiveWorkbook.Sheets
        If ws.Name <> "base" And ws.Name <> "certificat" And ws.Name <> "DSV" And ws.Name <> "liste_participants" And ws.Name <> "codes" And ws.Name <> "DE_V" And ws.Name <> "DE_P" And ws.Name <> "vente" And ws.Name <> "VE" And ws.Name <> "eleveurs" And ws.Name <> "modele" Then
            ComboBox4.AddItem ws.Name
        End If
    Next ws

    ComboBox5.List = Array("P")

End Sub
 
Hello

Quelques questions:

1) Dans les feuilles DE_P et DE_V
à quoi sert le tableau "Souche-Oiseaux" en colonne N-O ??
c'est un résumé? de quoi? , c'est le MEME pour les deux feuilles, ou chaque feuille peut avoir des données différentes??

2) Souche et éleveur.. c'est la meme chose?

3) sur tes formulaires, le combo pour choisir une ligne.. c'est indispensable??
parce que avec la propostion déjà fait, il suffit de cliquer sur une ligne dans la listbox..
 
- 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

Discussions similaires

Réponses
2
Affichages
1 K
Retour