Creer doublons sous conditions

Bonjour le forum,

voilà, je souhaiterai creer des lignes suplementaire quand il me manque une année et les classer suivant une transposition.

Un fichier joint vaut mieux qu'une explication ....

QQun peut-il me réaliser la macro ?

PS: j'ai plus de 20000 lignes !

merci à vous

Phil

13classeur1.zip (5.67 Ko)

Bonjour

Un essai

Pour 20 000 lignes cela risque d'être long

Merci beaucoup,

je manque de temps , je vais tester tout cela ce week end.

Je te tiens au courant.

Phil

Bonsoir banzai64,

cela te dérange t-il de m'expliquer ces différentes lignes?

J'avoue que le résultats est bon sur la 10 aine de lignes, il me reste plus qu' a essayer cela sur les 20000 ....

Mais j'aime bien comprendre afin d'essayer tout seul.

donc peux tu me mettre qques commentaire en face ces codes?

A l'avance je te remerci

Phil

With Sheets("Résultat")
    .Cells.Clear
    .Range("A1:F1") = Array("N° Article", "Code", "Prix HT 2010", "Stock 2010", "Prix HT 2011", "Stock 2011")
    Ligne = 1
    J = 4
    Do
      Ligne = Ligne + 1
      .Range("A" & Ligne).Resize(1, 2).Value = Range("A" & J).Resize(1, 2).Value
      If Range("B" & J) = Range("B" & J + 1) Then
        .Range("C" & Ligne).Resize(1, 2).Value = Range("C" & J).Resize(1, 2).Value
        .Range("E" & Ligne).Resize(1, 2).Value = Range("C" & J + 1).Resize(1, 2).Value
        J = J + 1

Bonjour

Quelques explications dans le code

Merci pour ces bonnes explications banzai64.

J'en ai une petite dernière...

Qu'est ce qui dit au programme que J est a lire dans feuil1 (pour l'écriture dans "résultats" je pense que c'est With Sheets("Résultat") qui provoque cela.?

merci

With Sheets("Résultat")
    .Cells.Clear              ' On efface la zone réception
    ' On marque l'entête
    .Range("A1:F1") = Array("N° Article", "Code", "Prix HT 2010", "Stock 2010", "Prix HT 2011", "Stock 2011")
Ligne = 1                 ' Ligne d'écriture
    J = 4                     ' [color=#FF0040]Ligne lue dans la page Feuil1[/color]
    Do                        ' Début de boucle
      Ligne = Ligne + 1       ' On change la ligne d'écriture
      ' On écrit déjà la partie communne
      .Range("A" & Ligne).Resize(1, 2).Value = Range("A" & J).Resize(1, 2).Value

Bonjour

C'est l'emplacement du bouton (dans ce cas) qui détermine la page à lire

Ah, ok, c'est logique avec cette explication.

Je solderai ce post quand j'aurais passé cette requête sur les 20000 lignes lundi.

Merci beaucoup et bon week-end.

Phil

Bonjour BANZAI64,

peux tu m'explique comment on écrit la ligne D alors que le code ne contient que le "C" ?

If Range("E" & Ligne) = 2010 Then                   ' On a 2010 ?
          ' Donc on écrit les infos 2010 en colonnes [color=#FF0000]C[/color] et D
          .Range("[color=#FF0000]C[/color]" & Ligne).Resize(1, 2).Value = Range("C" & J).Resize(1, 2).Value
          ' Pour les infos 2011 en E et F : Le prix de 2010 et le stock 2011 = 0
          .Range("E" & Ligne).Resize(1, 2).Value = Array(Range("C" & J).Value, 0)

merci d'avance

Phil

Bonjour

Le "secret" c'est le Resize

.Range("C" & Ligne).Resize(1, 2).Value = Range("C" & J).Resize(1, 2).Value

Grosso modo

La colonne C étendue de 1 ligne et 2 colonnes de la page "résultats" est égale à la colonne C étendue de 1 ligne et 2 colonnes de la page "Feuil1"

OK, merci beaucoup , ton aide m'a été précieuse.

Je tiens à te remercier.

Petite question et j'en finirai là:

Peux tu me dire comment mettre en gras et rouge la police des lignes qui sont rajoutées?

Merci d'avance

Phil

Bonjour

A tester

Merci beaucoup,

ça fonctionne !

te souhaitant une bonne journée et surement à la prochaine sur le forum.

Bye

Phil

Rechercher des sujets similaires à "creer doublons conditions"