Microsoft 365 Manque copie d une cellule

Moreno076

XLDnaute Impliqué
Bonsoir.

Voilà j'ai un tableau qui est fait avec plusieurs macros.
Je travaille sur les doublons qui se dédoublent.
Ca fonctionne bien mais il me manque les données de la colonne M.
Les données des colonnes B et C sont blanches c 'est normales mais remplies.
Les données de la colonnes M sont à chercher dans la colonne F ou 6 de la feuille X3.
Je cherche à modifier la macro ci dessous mais après des tests ca ne fonctionne pas.

1582586109252.png


La macro est Recherchedoublon j'ai mis un bouton CLIQUER ICI pour que vous testiez.

Sub RechercheDoublon()
Dim i&, j%, K%, Derlg&, DerlgX3&, Lg&, Trouvé%, Mot() As Variant, X3 As Worksheet
Set X3 = Sheets("X3")
Derlg = Range("B" & Rows.Count).End(xlUp).Row
DerlgX3 = X3.Range("G" & Rows.Count).End(xlUp).Row
For i = 2 To Derlg
If Cells(i, 7) = "R" Or Cells(i, 7) = "r" Then Cells(i, 7) = "Rupture"
Erase Mot
Trouvé = 0
For K = 2 To DerlgX3
If Cells(i, 2) = X3.Cells(K, 7) Then ' 1
If Trouvé = 0 Then ' 2
ReDim Preserve Mot(0, 8)
Mot(0, 1) = X3.Cells(K, 7) ' code
Mot(0, 2) = X3.Cells(K, 8) ' désignation
Mot(0, 3) = X3.Cells(K, 16) ' statut prépa
Mot(0, 4) = X3.Cells(K, 9) ' Qté commandée recep
Mot(0, 5) = X3.Cells(K, 10) ' Qté Prép
Mot(0, 7) = K
Trouvé = 1
Else ' 2
If Trouvé = 1 Then
Cells(i, 1) = "< DOUBLON >"
Cells(i, 11) = ""
Cells(i, 12) = ""
InsererBlanc Cells(i, 3)
End If
Lg = Range("c" & Rows.Count).End(xlUp).Row + 1
Cells(Lg, 2).Font.Color = Cells(Lg, 2).Interior.Color
Cells(Lg, 2) = X3.Cells(K, 7) ' code
Cells(Lg, 3).Font.Color = Cells(Lg, 3).Interior.Color
Cells(Lg, 3) = X3.Cells(K, 8) ' Désignation
Cells(Lg, 11) = X3.Cells(K, 9) ' Qté Commandée
Cells(Lg, 12) = X3.Cells(K, 10) ' Qté Traitée
Cells(i, 11) = CDbl(Cells(i, 11)) + CDbl(X3.Cells(K, 9)) ' Qté totale commandée
Cells(i, 12) = CDbl(Cells(i, 12)) + CDbl(X3.Cells(K, 10)) ' Qté totale Traitée
Trouvé = Trouvé + 1
End If ' 2
End If ' 1
Next K
If Trouvé > 1 Then
Lg = Range("c" & Rows.Count).End(xlUp).Row + 1
Cells(Lg, 2).Font.Color = Cells(Lg, 2).Interior.Color
Cells(Lg, 2) = Mot(0, 1)
Cells(Lg, 3).Font.Color = Cells(Lg, 3).Interior.Color
Cells(Lg, 3) = Mot(0, 2)
Cells(Lg, 11) = Mot(0, 4)
Cells(Lg, 12) = Mot(0, 5)
Cells(i, 11) = CDbl(Cells(i, 11)) + CDbl(Mot(0, 4)) ' Qté totale commandée
Cells(i, 12) = CDbl(Cells(i, 12)) + CDbl(Mot(0, 5)) ' Qté totale Traitée
End If
Next i
Set X3 = Nothing
End Sub



Y aurait-il une personne qui arriverait à me programmer cela? Merci beaucoup.

Bien cordialement






 

Pièces jointes

  • V60.xlsm
    425.9 KB · Affichages: 6
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Moreno,
Pas bien compris.
La colonne M contient la formule :
VB:
=SIERREUR(INDEX('X3'!F:F;EQUIV(B12;'X3'!G:G;0));"")
Que désirez vous ?
Que la formule de la colonne M soit tirée vers le bas ?
Ou remplacer la formule par une macro ?


Erreur :
Il y a une erreur :
DerlgX3 = X3.Range("G" & Rows.Count).End(xlUp).Row
Ya Pa d'erreur.:(
 
Dernière édition:

Moreno076

XLDnaute Impliqué
Bonjour :)
En fait lorsque tu cliques sur le bouton ca repere les doublons (meme code) saisi plusieurs fois dans X3. Je veux recopir les quantités commandées et préparées de cette ligne mais ainsi son statut préparé et date de reception. Donc colonnes A K L M apres le code est copié aussi mais en blanc car inutile c est juste pour les formules. Cdlt
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
C'est devenu très entremêlé ce code.
Je propose une solution.
Dans Worksheet_Change changez pour mettre
VB:
Sub Worksheet_Change(ByVal Target As Range)
''    If Target.Count > 1 Then Exit Sub
''    If Target.Column = 13 Then
''        DateReception
''    End If
End Sub
On n'en a plus besoin puisque la colonne M sera remplie avec les autres.
Puis la fonction à mettre à la suite après InsererBlanc:
Code:
Function PremLivAttendue(Code, MaxX3)        ' Premiere livraison attendue
date1 = 9 ^ 9
For Lig = 7 To MaxX3
    If Sheets("X3").Range("G" & Lig) = Code Then
        If Sheets("X3").Range("F" & Lig) < date1 Then date1 = Sheets("X3").Range("F" & Lig)
    End If
Next Lig
PremLivAttendue = date1
End Function
Cette fonction calcule la date de livraison min.
Sa syntaxe est : PremLivAttendue(Code,DerlgX3)
Donc là où vous voulez remplir la colonne M vous mettez :
Code:
Cells(IndexLigne, 13) = PremLivAttendue(Cells(IndexLigne, 2), DerlgX3)        ' Premiere livraison attendue
( 13 étant colonne M, 2 étant colonne B, le code )

J'ai éssayé de l'insérer mais ce n'était pas au bon endroit. La fonction marche mais pas dans la bonne cellule, j'ai du confondre i et Lg.
 

Moreno076

XLDnaute Impliqué
Re
Voilà j'ai rajouté ce que vous m'avez dit sauf
Cells(IndexLigne, 13) = PremLivAttendue(Cells(IndexLigne, 2), DerlgX3)
je ne vois pas où la mettre.

Je suis remonté un peu plus haut dans l enfilement des macros comme ça vous voyez le déroulé :)

Après le clic Résultat :

Pas de colonne A pour les doublons et colonne M erroné et après les doublosn plus de date.

J'aurais du donner ce remonté plus tot.

1582672037727.png


Ce n'es pas possible de simplement copier la cellule date réception prévue? mais je ne sais pas
1582698477174.png

Cdlt
 

Pièces jointes

  • V03.xlsm
    419.9 KB · Affichages: 1
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Là où vous voulez mettre "copier la cellule date réception prévue ", mettez la fonction, elle vous remonte la date prévue.
La fonction est importante, si j'ai tout compris, car si dans la liste X3 vous avez plusieurs codes B il faut bien trouvé la date de livraison au plus tôt.

Donc là où vous avez mis du stabilo essayez de mettre :
VB:
Cells(IndexLigne, 13) = PremLivAttendue(Cells(IndexLigne, 2), DerlgX3)        ' Premiere livraison attendu
Le problème est de savoir que vaut IndexLigne, est ce i ou Lg ?
NB : Vous avez pensé à invalider la fonction Worksheet_Change car maintenant ça perturbe plus qu'autre chose.
 

Moreno076

XLDnaute Impliqué
Re
Arrivé à l'étape du fichier ci joint. Ne peut-on pas crée une macro disant Si il y a plusieurs fois le code de la colonne B alors je recopie les informations des colonnes FIJP de X3 dans les colonnes MKLA de synthèse? En suggérant que le fichier X3 est classé par ordre alpha au niveau du code.

Si dans synthese je rencontre le même code dans X3 alors je recopie la ligne en dessous des cellules suivantes des colonnes citées au dessus. si je trouve de nouveau ce code je recopie 2 fois en dessous si je retrouve encore ce code je recopie encore dessous etc...
 

Pièces jointes

  • V06.xlsm
    427.8 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Moreno,

Vraiment je ne comprends plus. Le code est devenu de plus en plus entremêlé comme je l'ai déjà dit.
Ce n'est pas en rajoutant des macros en permanence que ça va arranger les choses.
Par exemple si on appuie plusieurs fois sur le bouton, rien n'est déterministe. Il continue à remplir sans s’arrêter.

Le mieux à mon avis est de reprendre le code existant pour que son comportement minimum soit correct et faire l'état de lieux.

Pour le problème annoncé la syntaxe ne peut être :
Cells(IndexLigne, 13) = PremLivAttendue(Cells(IndexLigne, 2), DerlgX3)
1- IndexLigne est juste l'énoncé de la syntaxe
2- IndexLigne ne peut être que Lg ou i
3- IndexLigne ne peut pas être à droite et à gauche du signe =
4- la syntaxe est comme déjà dit :
Cells(là ou je veux ranger,13) = PremLivAttendue(code recherché, DerlgX3) ' 13 car colonne M
Il suffit de lire la fonction
Function PremLivAttendue(Code, MaxX3) pour en comprendre la syntaxe
 

Moreno076

XLDnaute Impliqué
Re
J'ai mis le fichier à 0 au point de départ.
Si vous avez le temps de regarder j'ai mis le détail des process, ce sera intéressant de voir les étapes et de comprendre.
Ca doit être assez long à faire je pense. Enfin pour moi.

Bien cordialement
 

Pièces jointes

  • AVEC DOUBLON.JPG
    AVEC DOUBLON.JPG
    132.8 KB · Affichages: 1
  • SANS DOUBLON.JPG
    SANS DOUBLON.JPG
    94.4 KB · Affichages: 1
  • Version0.xlsm
    254.5 KB · Affichages: 1
Haut Bas