Bonjour a tous,
Je suis confronter a un tric bizarre sur une macro. Si quelqu’un a une idée,
ça me sauve :
Dans un tableau « produce » ici [U9 :U18] je rentre des références (qui
peuvent être identique sur plusieurs ligne. Je voudrai en lançant la macro
les transférer dans un tableau a deux colonnes : référence et quantité : ici
[Q26 :R100]. Si la référence n’existai pas encore, elle se rajoute et la
quantité 1 apparaît si elle existai : +1 s’ajoute a la quantité existante.
La macro si dessous semble marcher mais par un grand mystère, si une
référence était dans mon tableau initial [U9 :U18] a plusieurs reprises et
n’existait pas dans mon tableau [référence, quantité], alors au lieu de crée
la référence la première fois et d’ajouter 1 en quantité au chaque foi
suivante, la référence se rajoute (se créé) plusieurs fois dans le tableau.
Or ce n’est pas ce que je veux. Je comprend pas pourquoi ! merci pour voa
aide precedente! ca sauve!
On Error Resume Next
For produce_line = 9 To 18
produce_cell = "U" & produce_line
If Range(produce_cell) = "" Then GoTo produce_next
[Q26:Q100].Find(what:=Range(produce_cell)).Activate
If Err.Number <> 0 Then
Range("Q27:R27").Select
Selection.Insert Shift:=xlDown
Range("R27").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1"
Else
With Selection
ActiveCell.End(xlToRight).Value =
ActiveCell.End(xlToRight).Value + 1
End With
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
bonjour,
il te manque un err.clear quand il y a eu une erreur. voir dasn ce qui suit le bout de ta proc remaniée.
If Err.Number <> 0 Then Err.Clear Range("Q27:R27").Insert Shift:=xlDown Range(produce_cell).Copy Range("Q27").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("R27").FormulaR1C1 = "1" Else With Selection ActiveCell.End(xlToRight).Value = ActiveCell.End(xlToRight).Value + 1 End With End If
Par ailleurs, je ne l'ai pas corrigé, mais il me semble qu'il y a une incohérence logique dans ta proc. En effet, si tu as un élement nouveau dans ta liste en U9:U18, tel que tu écris ta proc , celui-ci vient se rajouter à la liste Q26:Q100. Du coup, ta liste à scruter ne devrait plus être plus Q26:Q100 mais Q26:Q101 et ainsi de suite chaque fois que tu auras un élement nouveau. Or dans ta proc, le test est toujours fait sur Q26:Q100. En conséquence, si tu as au moins 1 élément nouveau et que celui-ci est positionné avant la fin de liste en U89:U18 (initial), tu peux risquer d'ajouter au moins 1 élement dans la liste Q26:Qx qui existait déjà par ailleurs, puisque le test sur Q26:Q100 ne l'aura pas détecté. Tu as peut-être eu de la chance jusqu'ici mais ca pourrait ne pas durer. J'espère avoir été clair
A+
Bonjour a tous, Je suis confronter a un tric bizarre sur une macro. Si quelqu’un a une idée, ça me sauve :
Dans un tableau « produce » ici [U9 :U18] je rentre des références (qui peuvent être identique sur plusieurs ligne. Je voudrai en lançant la macro les transférer dans un tableau a deux colonnes : référence et quantité : ici [Q26 :R100]. Si la référence n’existai pas encore, elle se rajoute et la quantité 1 apparaît si elle existai : +1 s’ajoute a la quantité existante. La macro si dessous semble marcher mais par un grand mystère, si une référence était dans mon tableau initial [U9 :U18] a plusieurs reprises et n’existait pas dans mon tableau [référence, quantité], alors au lieu de crée la référence la première fois et d’ajouter 1 en quantité au chaque foi suivante, la référence se rajoute (se créé) plusieurs fois dans le tableau. Or ce n’est pas ce que je veux. Je comprend pas pourquoi ! merci pour voa aide precedente! ca sauve!
On Error Resume Next For produce_line = 9 To 18 produce_cell = "U" & produce_line
If Range(produce_cell) = "" Then GoTo produce_next
[Q26:Q100].Find(what:=Range(produce_cell)).Activate If Err.Number <> 0 Then Range("Q27:R27").Select Selection.Insert Shift:=xlDown
Range("R27").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "1" Else With Selection ActiveCell.End(xlToRight).Value = ActiveCell.End(xlToRight).Value + 1 End With End If
il te manque un err.clear quand il y a eu une erreur. voir dasn ce qui suit
le bout de ta proc remaniée.
If Err.Number <> 0 Then
Err.Clear
Range("Q27:R27").Insert Shift:=xlDown
Range(produce_cell).Copy
Range("Q27").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("R27").FormulaR1C1 = "1"
Else
With Selection
ActiveCell.End(xlToRight).Value =
ActiveCell.End(xlToRight).Value + 1
End With
End If
Par ailleurs, je ne l'ai pas corrigé, mais il me semble qu'il y a une
incohérence logique dans ta proc.
En effet, si tu as un élement nouveau dans ta liste en U9:U18, tel que tu
écris ta proc , celui-ci vient se rajouter à la liste Q26:Q100. Du coup, ta
liste à scruter ne devrait plus être plus Q26:Q100 mais Q26:Q101 et ainsi de
suite chaque fois que tu auras un élement nouveau. Or dans ta proc, le test
est toujours fait sur Q26:Q100.
En conséquence, si tu as au moins 1 élément nouveau et que celui-ci est
positionné avant la fin de liste en U89:U18 (initial), tu peux risquer
d'ajouter au moins 1 élement dans la liste Q26:Qx qui existait déjà par
ailleurs, puisque le test sur Q26:Q100 ne l'aura pas détecté. Tu as peut-être
eu de la chance jusqu'ici mais ca pourrait ne pas durer.
J'espère avoir été clair
A+
Bonjour a tous,
Je suis confronter a un tric bizarre sur une macro. Si quelqu’un a une idée,
ça me sauve :
Dans un tableau « produce » ici [U9 :U18] je rentre des références (qui
peuvent être identique sur plusieurs ligne. Je voudrai en lançant la macro
les transférer dans un tableau a deux colonnes : référence et quantité : ici
[Q26 :R100]. Si la référence n’existai pas encore, elle se rajoute et la
quantité 1 apparaît si elle existai : +1 s’ajoute a la quantité existante.
La macro si dessous semble marcher mais par un grand mystère, si une
référence était dans mon tableau initial [U9 :U18] a plusieurs reprises et
n’existait pas dans mon tableau [référence, quantité], alors au lieu de crée
la référence la première fois et d’ajouter 1 en quantité au chaque foi
suivante, la référence se rajoute (se créé) plusieurs fois dans le tableau.
Or ce n’est pas ce que je veux. Je comprend pas pourquoi ! merci pour voa
aide precedente! ca sauve!
On Error Resume Next
For produce_line = 9 To 18
produce_cell = "U" & produce_line
If Range(produce_cell) = "" Then GoTo produce_next
[Q26:Q100].Find(what:=Range(produce_cell)).Activate
If Err.Number <> 0 Then
Range("Q27:R27").Select
Selection.Insert Shift:=xlDown
Range("R27").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "1"
Else
With Selection
ActiveCell.End(xlToRight).Value =
ActiveCell.End(xlToRight).Value + 1
End With
End If
il te manque un err.clear quand il y a eu une erreur. voir dasn ce qui suit le bout de ta proc remaniée.
If Err.Number <> 0 Then Err.Clear Range("Q27:R27").Insert Shift:=xlDown Range(produce_cell).Copy Range("Q27").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("R27").FormulaR1C1 = "1" Else With Selection ActiveCell.End(xlToRight).Value = ActiveCell.End(xlToRight).Value + 1 End With End If
Par ailleurs, je ne l'ai pas corrigé, mais il me semble qu'il y a une incohérence logique dans ta proc. En effet, si tu as un élement nouveau dans ta liste en U9:U18, tel que tu écris ta proc , celui-ci vient se rajouter à la liste Q26:Q100. Du coup, ta liste à scruter ne devrait plus être plus Q26:Q100 mais Q26:Q101 et ainsi de suite chaque fois que tu auras un élement nouveau. Or dans ta proc, le test est toujours fait sur Q26:Q100. En conséquence, si tu as au moins 1 élément nouveau et que celui-ci est positionné avant la fin de liste en U89:U18 (initial), tu peux risquer d'ajouter au moins 1 élement dans la liste Q26:Qx qui existait déjà par ailleurs, puisque le test sur Q26:Q100 ne l'aura pas détecté. Tu as peut-être eu de la chance jusqu'ici mais ca pourrait ne pas durer. J'espère avoir été clair
A+
Bonjour a tous, Je suis confronter a un tric bizarre sur une macro. Si quelqu’un a une idée, ça me sauve :
Dans un tableau « produce » ici [U9 :U18] je rentre des références (qui peuvent être identique sur plusieurs ligne. Je voudrai en lançant la macro les transférer dans un tableau a deux colonnes : référence et quantité : ici [Q26 :R100]. Si la référence n’existai pas encore, elle se rajoute et la quantité 1 apparaît si elle existai : +1 s’ajoute a la quantité existante. La macro si dessous semble marcher mais par un grand mystère, si une référence était dans mon tableau initial [U9 :U18] a plusieurs reprises et n’existait pas dans mon tableau [référence, quantité], alors au lieu de crée la référence la première fois et d’ajouter 1 en quantité au chaque foi suivante, la référence se rajoute (se créé) plusieurs fois dans le tableau. Or ce n’est pas ce que je veux. Je comprend pas pourquoi ! merci pour voa aide precedente! ca sauve!
On Error Resume Next For produce_line = 9 To 18 produce_cell = "U" & produce_line
If Range(produce_cell) = "" Then GoTo produce_next
[Q26:Q100].Find(what:=Range(produce_cell)).Activate If Err.Number <> 0 Then Range("Q27:R27").Select Selection.Insert Shift:=xlDown
Range("R27").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "1" Else With Selection ActiveCell.End(xlToRight).Value = ActiveCell.End(xlToRight).Value + 1 End With End If