J'aurais besoin d'aide pour me faire une macro qui recherche les doublons de la colonne G dans l'onglet X3 et les insérer dans l'onglet Synthese en dessous de chaque référence en doublon et en ne conservant que certaines informations. Le plus simple est de joindre le fichier origine 60 et ce que je veux 61.
C'est bon ca fonctionne presque. Il me manque juste pour la colonne N une macro recopiant la case de la colonne M si c'est marqué < DOUBLON >. Si ce n'est pas marqué doublon, mais qu'il y a une date, rajouter la date avec un jour de plus, enfin si il n y a rien de marqué, indiqué Pas de date précise. Je pense que c'est plus simple. Merci pour votre aide
Bonsoir Moreno,
Pourquoi une macro et pas une simple formule du genre en N2:
VB:
=SI(M2="";"Pas de date précise";SI(M2="< DOUBLON >";M2;M2+1))
Sinon en VBA, cela pourrait donner ça :
Code:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To Taille
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Par contre je ne sais pas où vous voulez le placer. A vous de faire le Call.
Bonsoir Moreno,
Pourquoi une macro et pas une simple formule du genre en N2:
VB:
=SI(M2="";"Pas de date précise";SI(M2="< DOUBLON >";M2;M2+1))
Sinon en VBA, cela pourrait donner ça :
Code:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To Taille
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Par contre je ne sais pas où vous voulez le placer. A vous de faire le Call.
Merci c'est impeccable, il me reste juste encore la colonne M la formule est =SI(A2="< DOUBLON >";"< DOUBLON >";"") C'est plus simple je trouve d'avoir des macros comme ça je n'ai aucune formule qui traine nulle part.
Si c'est un choix délibéré, rien à redire.
Pour la colonne M, on peut l'intégrer dans la même macro:
VB:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To Taille
If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Si c'est un choix délibéré, rien à redire.
Pour la colonne M, on peut l'intégrer dans la même macro:
VB:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To Taille
If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Bonjour.
En fait non ce serait mieux en formule car évidemment lorsque je met ou change une date en colonne M la colonne N ne se change pas. Je n'y avait pas pensé
Je ne suis pas parvenu à reproduire le défaut sauf si le fichier est vide.
Dans ce cas Taille=1 puis on fait for i=2 to 1 ! Dans ce cas il faut mettre une sécurité si Taille<2.
VB:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
If Taille < 2 Then Exit Sub
For i = 2 To Taille
If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Je ne suis pas parvenu à reproduire le défaut sauf si le fichier est vide.
Dans ce cas Taille=1 puis on fait for i=2 to 1 ! Dans ce cas il faut mettre une sécurité si Taille<2.
VB:
Sub DateReception()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
If Taille < 2 Then Exit Sub
For i = 2 To Taille
If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"
Case Else
Range("N" & i) = ValM + 1
End Select
Next i
End Sub
Désolé, ça marche chez moi.
Ou alors je ne fais pas la bonne manip.
Fichier vierge, je rentre Envoyée en colonne A, sur même ligne en M je fais Ctrl . pour entrer la date et la macro met en N la date de demain.
... si ça continue il va falloir vous résoudre à mettre des formules.
Pouvez vous me dire exactement ce que vous faites avant que la macro plante ? et sur quelle ligne ?
Lors du plantage appuyez sur Débogage, la ligne incriminée va se mettre en jaune.
Désolé, ça marche chez moi.
Ou alors je ne fais pas la bonne manip.
Fichier vierge, je rentre Envoyée en colonne A, sur même ligne en M je fais Ctrl . pour entrer la date et la macro met en N la date de demain.
... si ça continue il va falloir vous résoudre à mettre des formules.
Pouvez vous me dire exactement ce que vous faites avant que la macro plante ? et sur quelle ligne ?
Lors du plantage appuyez sur Débogage, la ligne incriminée va se mettre en jaune.
A priori c'est au moment de Call Réception ca plante j'ai effectué les macros d'avant une par une. Je ne peux pas voir le message d erreur car ca plante mais si je fais une par une