Partager via

Macro formule conditionnelle

Anonyme
2017-05-13T04:59:42+00:00

Bonjour Daniel,

J’ai une autre problématique. Je souhaite transférer des infos d’une feuille à une autre mais cette fois il faut passer je crois par des macros avec formule conditionnelles je crois.

Sur l’onglet « Facture » en cellule J67 je souhaiterai que dès que je choisi dans la liste déroulante de cette cellule le mot « Acompte » qu’en colonne I5 de l’onglet «Mai » apparaisse le mot « Commande » et **** que le montant situé dans la cellule **L67 de l'onglet " Facture"**soit transféré en colonne P5 de l’onglet « MAI » et ce pour chacun des mois de l’année.

Enfin, je souhaiterai que les infos de liste déroulantes de la colonne K67 et L67 soit dispatchées en fonction du titre de paiement choisi dans l’onglet « règlements Mai » en colonne H,I,J,K,L,M, N pour chacun des clients et pour chacune des onglets règlements ( règlements janvier, règlements février, etc……)

Voici le lien ci-dessous de mon fichier Excel.

https://1drv.ms/x/s!AjYqfnwTceBWxh9fGbIFHPeGPmK4

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2017-05-15T17:45:28+00:00

Normal que tu ne puisses pas te rendre compte. C'est le nombre de questions auxquelles il faut répondre qui fait que c'est stressant parfois. Mais, bon, c'est un choix aussi.

Merci pour la facture. C a l'air de se rapprocher. La seule anomalie que je voie, c'est que le code A003 correspond à "armoire", pas à "buffet".

Voici le code, le classeur est modifié :

Sub Copy() <br><br>     Dim Mois As Variant, Sh As Worksheet, Ligne As Long, C As Range, Lig As Long, Col As Integer <br><br>     Sheets("facture").Protect Password:="iba", userinterfaceonly:=True <br><br>     Mois = Array("JANVIER", "FÉVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", _ <br><br>         "AOÛT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DÉCEMBRE") <br><br>     With Sheets("facture") <br><br>         Set Sh = Sheets(Application.Index(Mois, Month(.[G11]))) <br><br>         Ligne = Sh.Cells(.Rows.Count, 5).End(xlUp).Row + 1 <br><br>         Lig = Ligne <br><br>         Sh.Cells(Ligne, 1) = .[G11] <br><br>         Sh.Cells(Ligne, 2) = .[C11] <br><br>         Sh.Cells(Ligne, 13) = .[H63] <br><br>         If .[J67] = "Acompte:" Then <br><br>            Sh.Cells(Ligne, 9) = "Commande" <br><br>            Sh.Cells(Ligne, "P") = .[L67] <br><br>         End If <br><br>         For Each C In .Range("C14", .[C13].End(xlDown)) <br><br>             Sh.Cells(Ligne, 6) = C.Value <br><br>             Sh.Cells(Ligne, 5) = C.Offset(, -1).Value <br><br>             Sh.Cells(Ligne, 14) = .Cells(C.Row, 9).Value <br><br>             Ligne = Ligne + 1 <br><br>         Next C <br><br>         Set Sh = Sheets("Règlements " & Sh.Name) <br><br>         For Each C In .[K67:K70] <br><br>             If C <> "" Then <br><br>                Col = Application.Match(C.Value, Sh.[4:4], 0) <br><br>                Sh.Cells(Lig, Col) = C.Offset(, 1).Value <br><br>                Lig = Lig + 1 <br><br>             End If <br><br>         Next C <br><br>         'RAZ feuille <br><br>         .[H2] = "Identifiant" <br><br>         .[B14:C62].Value = "" <br><br>         .[H63].Value = "" <br><br>         .[I14:I62].Value = "" <br><br>         .[I12].Value = "" <br><br>         .[K12].Value = "" <br><br>         .[D63].Value = "" <br><br>         .[I67:L70].Value = "" <br><br>     End With <br><br> End Sub

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

16 réponses supplémentaires

  1. Anonyme
    2017-05-13T14:42:08+00:00

    J'ai essayé la macro. Elle fonctionne parfaitement quand à la répartition des moyens de paiement en CB, espèces, etc.....C'est super :)))) 

    Le petit problème est que lorsqu'on entre une valeur dans la colonne L67 de l'onglet facture elles sont considérées comme des acomptes dans la colonne P5 de l'onglet "MAI", alors que se sont des règlements comptants. Dans les cellules J67:L70, il faudrait, je pense mettre une formule conditionnelle pour mettre en acompte uniquement que les règlements qui répondent au critère acompte qui se trouve dans la liste déroulante J67 de l'onglet " Facture" et si c'est le cas faire apparaître en colonne I5 de l'onglet "MAI" la mention commande.

    J'ai noté que les remises faites sur différents articles de l'onglet "FACTURE" ne sont répertoriées uniquement que pour le premier article et non sur les suivants en colonne N5 de l'onglet " MAI".

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2017-05-13T10:46:27+00:00

    Voici la macro modifiée :

    Sub Copy() <br><br>     Dim Mois As Variant, Sh As Worksheet, Ligne As Long, C As Range, Lig As Long, Col As Integer <br><br>     Sheets("facture").Protect Password:="iba", userinterfaceonly:=True <br><br>     Mois = Array("JANVIER", "FÉVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", _ <br><br>         "AOÛT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DÉCEMBRE") <br><br>     With Sheets("facture") <br><br>         Set Sh = Sheets(Application.Index(Mois, Month(.[G11]))) <br><br>         Ligne = Sh.Cells(.Rows.Count, 5).End(xlUp).Row + 1 <br><br>         Lig = Ligne <br><br>         Sh.Cells(Ligne, 1) = .[G11] <br><br>         Sh.Cells(Ligne, 2) = .[C11] <br><br>         Sh.Cells(Ligne, 13) = .[H63] <br><br>         Sh.Cells(Ligne, 14) = .[I14] <br><br>         Sh.Cells(Ligne, 9) = .[J67] <br><br>         Sh.Cells(Ligne, "P") = .[L67] <br><br>         For Each C In .Range("C14", .[C13].End(xlDown)) <br><br>             Sh.Cells(Ligne, 6) = C.Value <br><br>             Sh.Cells(Ligne, 5) = C.Offset(, -1).Value <br><br>             Ligne = Ligne + 1 <br><br>         Next C <br><br>         Set Sh = Sheets("Règlements " & Sh.Name) <br><br>         For Each C In .[K67:K70] <br><br>             If C <> "" Then <br><br>                Col = Application.Match(C.Value, Sh.[4:4], 0) <br><br>                Sh.Cells(Lig, Col) = C.Offset(, 1).Value <br><br>                Lig = Lig + 1 <br><br>             End If <br><br>         Next C <br><br>         'RAZ feuille <br><br>         .[H2] = "Identifiant" <br><br>         .[B14:C62].Value = "" <br><br>         .[H63].Value = "" <br><br>         .[I14:I62].Value = "" <br><br>         .[I12].Value = "" <br><br>         .[K12].Value = "" <br><br>         .[D63].Value = "" <br><br>         .[I67:L70].Value = "" <br><br>     End With <br><br> End Sub

    Le classeur  est modifié.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2017-05-13T09:06:30+00:00

    les colonne A:G se remplissent automatiquement quand on rempli la facture de l'onglet " FACTURE" qui transfert les infos dans le document de l'onglet "Mai" en colonne A:G.  L'onglet "Règlement mai" reprend tout simplement les infos de l'onglet "MAI" en A:G.

    Entre un client en déroulant la liste en H2 de l'onglet "Facture" puis choisi un article en B14 du même onglet, met une quantité. Exécute la macro et tu comprendras comment les colonnes A:G de l'onglet " règlement mai" se remplissent......

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. DanielCo 107.7K Points de réputation
    2017-05-13T08:12:34+00:00

    Bonjour,

    Je ne vois pas où sont remplies les colonnes A:G de la feuille "Règlements mai". Faut-il les remplir aussi ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire