Macro remplis donnée manquante

  • Initiateur de la discussion Initiateur de la discussion roidurif
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

roidurif

XLDnaute Occasionnel
Bjr,

J'ai un tableau dans lequel il y a des références produits, description, prix.... seulement parfois dans le tableau il peux y a avoir la même référence à différent prix, mais sans que certain champs ne soit ressaisie.

Ce que j' aimerais faire c'est de créer une macro qui remplis automatiquement les champs non renseigné à partir des champs renseignés de la 1 ère référence.

Je vous joins mon fichier pour voir

Merci de votre aide
 

Pièces jointes

Re : Macro remplis donnée manquante

Merci Papou-net,

J'ai vu ta macro et je ne sais pas comment la lancer?
De plus j' ai rajouter d'autre colonne dans la macro, j'espere que c'est comme ça.

ci-joint ce le fichier.
Merci de ton aide

Tu n'as pas besoin de la lancer, elle s'exécute auomatiquement à chaque changement de valeur dans la colonne 'produit'.
Oui, les lignes que tu as rajoutées sont bonnes : j'ai fait le test en réécrivant dans la colonne C de la ligne 11. Tu peux continuer de réécrire dans le autres cellules pour le vérifier.

Restant à ta disposition.

Cordialement.
 
Re : Macro remplis donnée manquante

Merci Papou-net

Es ce que l 'on peu rajouter une condition ou c complexe, c a d, si un champs de la 2 eme ligne ou 3eme ou.... est déja renseigné alors laissé champs indiqué et ne renseigné que quand c'est vide.

Merci de l'aide
 
Re : Macro remplis donnée manquante

Oui, je pense que tu dois y arriver de cette façon :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = Range("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues)
If Not cel Is Nothing Then
  If IsEmpty(Cells(Target.Row, 5)) Then Cells(Target.Row, 5) = Cells(cel.Row, 5)
  If IsEmpty(Cells(Target.Row, 6)) Then Cells(Target.Row, 6) = Cells(cel.Row, 6)
  If ismepty(Cells(Target.Row, 7)) Then Cells(Target.Row, 7) = Cells(cel.Row, 7)
' et ainsi de suite .....
End If

End Sub

Cordialement.
 
Re : Macro remplis donnée manquante

C'est superbe Papou-net, Merci enormement de ton aide

J'essaye en parallelle pour mes anciens fichiers de lancer à l'aide d'un bouton, le code suivant, es ce ke je suis bien parti??

Code:
Sub Remplissage()

With Sheets("Feuil1")

If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = Range("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues)
If Not cel Is Nothing Then
  If IsEmpty(Cells(Target.Row, 5)) Then Cells(Target.Row, 5) = Cells(cel.Row, 5)
  If IsEmpty(Cells(Target.Row, 6)) Then Cells(Target.Row, 6) = Cells(cel.Row, 6)
  If IsEmpty(Cells(Target.Row, 7)) Then Cells(Target.Row, 7) = Cells(cel.Row, 7)
  If IsEmpty(Cells(Target.Row, 28)) Then Cells(Target.Row, 28) = Cells(cel.Row, 28)
  If IsEmpty(Cells(Target.Row, 29)) Then Cells(Target.Row, 29) = Cells(cel.Row, 29)
  If IsEmpty(Cells(Target.Row, 34)) Then Cells(Target.Row, 34) = Cells(cel.Row, 34)
  If IsEmpty(Cells(Target.Row, 35)) Then Cells(Target.Row, 35) = Cells(cel.Row, 35)
  If IsEmpty(Cells(Target.Row, 49)) Then Cells(Target.Row, 49) = Cells(cel.Row, 49)
  If IsEmpty(Cells(Target.Row, 50)) Then Cells(Target.Row, 50) = Cells(cel.Row, 50)
  If IsEmpty(Cells(Target.Row, 53)) Then Cells(Target.Row, 53) = Cells(cel.Row, 53)
  If IsEmpty(Cells(Target.Row, 54)) Then Cells(Target.Row, 54) = Cells(cel.Row, 54)
  If IsEmpty(Cells(Target.Row, 55)) Then Cells(Target.Row, 55) = Cells(cel.Row, 55)
  
End If

End With

End Sub

Cordialement
 
Re : Macro remplis donnée manquante

Oui, mais tu dois précéder toutes les références de cellules (Range et Cells) par un point pour qu'elles puissent être attachées à ta référence de feuille (With ... End With).

Ex :

Code:
With Sheets("Feuil1")

If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = [COLOR="Red"][B].[/B][/COLOR]Range("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues)
If Not cel Is Nothing Then
  If IsEmpty([COLOR="Red"][B].[/B][/COLOR]Cells(Target.Row, 5)) Then [COLOR="Red"][B].[/B][/COLOR]Cells(Target.Row, 5) = [COLOR="Red"][B].[/B][/COLOR]Cells(cel.Row, 5)
  If IsEmpty([COLOR="Red"][B].[/B][/COLOR]Cells(Target.Row, 6)) Then [COLOR="Red"][B].[/B][/COLOR]Cells(Target.Row, 6) = [COLOR="Red"][B].[/B][/COLOR]Cells(cel.Row, 6)
......
  
End If

End With

Cordialement.
 
Re : Macro remplis donnée manquante

Papou-net, j'ai une erreure 424 en deuxieme ligne. Pourtant j'ai bien suivi tes conseils.

Cordialement

Code:
Sub Remplissage()

With Sheets("BDD")

If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = .Range("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues)
If Not cel Is Nothing Then
  If IsEmpty(.Cells(Target.Row, 5)) Then .Cells(Target.Row, 5) = .Cells(cel.Row, 5)
  If IsEmpty(.Cells(Target.Row, 6)) Then .Cells(Target.Row, 6) = .Cells(cel.Row, 6)
  If IsEmpty(.Cells(Target.Row, 7)) Then .Cells(Target.Row, 7) = .Cells(cel.Row, 7)
  If IsEmpty(.Cells(Target.Row, 28)) Then .Cells(Target.Row, 28) = .Cells(cel.Row, 28)
  If IsEmpty(.Cells(Target.Row, 29)) Then .Cells(Target.Row, 29) = .Cells(cel.Row, 29)
  If IsEmpty(.Cells(Target.Row, 34)) Then .Cells(Target.Row, 34) = .Cells(cel.Row, 34)
  If IsEmpty(.Cells(Target.Row, 35)) Then .Cells(Target.Row, 35) = .Cells(cel.Row, 35)
  If IsEmpty(.Cells(Target.Row, 49)) Then .Cells(Target.Row, 49) = .Cells(cel.Row, 49)
  If IsEmpty(.Cells(Target.Row, 50)) Then .Cells(Target.Row, 50) = .Cells(cel.Row, 50)
  If IsEmpty(.Cells(Target.Row, 53)) Then .Cells(Target.Row, 53) = .Cells(cel.Row, 53)
  If IsEmpty(.Cells(Target.Row, 54)) Then .Cells(Target.Row, 54) = .Cells(cel.Row, 54)
  If IsEmpty(.Cells(Target.Row, 55)) Then .Cells(Target.Row, 55) = .Cells(cel.Row, 55)
  
End If

End With
End Sub

Cordialement.[/QUOTE]
 
Re : Macro remplis donnée manquante

Comment lances-tu ta macro ?
Je pense que l'erreur vient de Target : ce mot désigne la cellule sélectionnée avant que l'événement ne se produise. Il faut donc que la feuille que tu veux traiter soit active.
Sinon, il faut remplacer Target par l'adresse de la cellule à traiter.

Cordialement.
 
Re : Macro remplis donnée manquante

Bonjour Papou-net,
ce que j'essaye de faire, c'est dans un 1er temps d'aller chercher un fichier dans lequel il contient un onglet BDD et de le rajouter automatiquement dans notre fichier via une macro que j'ai déja créer.

Ensuite dans un 2ème temps lancer automatiquement notre macro soit à partir d'une feuille quelconque ou alors se lancer automatiquement une fois que c'est copier

J'ai fait cela mais je crois que je suis loin encore du resultat.


Code:
Sub Remplissage()


If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = Sheets("BDD").Range(Target("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues))
If Not cel Is Nothing Then
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 5)) Then Sheets("BDD").Cells(Target.Row, 5) = Sheets("BDD").Cells(cel.Row, 5)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 6)) Then Sheets("BDD").Cells(Target.Row, 6) = Sheets("BDD").Cells(cel.Row, 6)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 7)) Then Sheets("BDD").Cells(Target.Row, 7) = Sheets("BDD").Cells(cel.Row, 7)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 28)) Then Sheets("BDD").Cells(Target.Row, 28) = Sheets("BDD").Cells(cel.Row, 28)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 29)) Then Sheets("BDD").Cells(Target.Row, 29) = Sheets("BDD").Cells(cel.Row, 29)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 34)) Then Sheets("BDD").Cells(Target.Row, 34) = Sheets("BDD").Cells(cel.Row, 34)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 35)) Then Sheets("BDD").Cells(Target.Row, 35) = Sheets("BDD").Cells(cel.Row, 35)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 49)) Then Sheets("BDD").Cells(Target.Row, 49) = Sheets("BDD").Cells(cel.Row, 49)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 50)) Then Sheets("BDD").Cells(Target.Row, 50) = Sheets("BDD").Cells(cel.Row, 50)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 53)) Then Sheets("BDD").Cells(Target.Row, 53) = Sheets("BDD").Cells(cel.Row, 53)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 54)) Then Sheets("BDD").Cells(Target.Row, 54) = Sheets("BDD").Cells(cel.Row, 54)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 55)) Then Sheets("BDD").Cells(Target.Row, 55) = Sheets("BDD").Cells(cel.Row, 55)
  
End If

End Sub
 
Re : Macro remplis donnée manquante

Re,

Je ne sais pas si je dois reformuler mon problème, car j'ai pas de réponse?

Merci


Bonsoir roidurif,

Je suis désolé, mais je suis en pleins préparatifs car je pars en voyage demain, et pour 5 semaines.
Je n'aurai donc pas le temps de t'aider davantage dans l'immédiat.
J'espère qu'une âme charitable saura t'apporter davantage de précisions pour t'aider à finaliser ton application.

Cordialement.
 
Re : Macro remplis donnée manquante

Ok merci Papou-net, bon voyage

S'il y ' a une personne qui peux m'aider serait surper sympa



Ce que j'essaye de faire :
C'est dans un 1er temps d'aller chercher un fichier dans lequel il contient un onglet BDD et de le rajouter automatiquement dans notre fichier via une macro que j'ai déja créer.

Ensuite dans un 2ème temps lancer automatiquement notre macro (Voir code ci-dessous) soit à partir d'une feuille quelconque ou alors se lancer automatiquement une fois que c'est copier

J'ai fait cela mais je crois que je suis loin encore du resultat.



Code:
Sub Remplissage()


If Target.Column <> 3 Then Exit Sub
Lg = Target.Row
Set cel = Sheets("BDD").Range(Target("C1:C" & Lg - 1).Find(Target.Value, LookIn:=xlValues))
If Not cel Is Nothing Then
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 5)) Then Sheets("BDD").Cells(Target.Row, 5) = Sheets("BDD").Cells(cel.Row, 5)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 6)) Then Sheets("BDD").Cells(Target.Row, 6) = Sheets("BDD").Cells(cel.Row, 6)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 7)) Then Sheets("BDD").Cells(Target.Row, 7) = Sheets("BDD").Cells(cel.Row, 7)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 28)) Then Sheets("BDD").Cells(Target.Row, 28) = Sheets("BDD").Cells(cel.Row, 28)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 29)) Then Sheets("BDD").Cells(Target.Row, 29) = Sheets("BDD").Cells(cel.Row, 29)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 34)) Then Sheets("BDD").Cells(Target.Row, 34) = Sheets("BDD").Cells(cel.Row, 34)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 35)) Then Sheets("BDD").Cells(Target.Row, 35) = Sheets("BDD").Cells(cel.Row, 35)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 49)) Then Sheets("BDD").Cells(Target.Row, 49) = Sheets("BDD").Cells(cel.Row, 49)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 50)) Then Sheets("BDD").Cells(Target.Row, 50) = Sheets("BDD").Cells(cel.Row, 50)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 53)) Then Sheets("BDD").Cells(Target.Row, 53) = Sheets("BDD").Cells(cel.Row, 53)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 54)) Then Sheets("BDD").Cells(Target.Row, 54) = Sheets("BDD").Cells(cel.Row, 54)
  If IsEmpty(Sheets("BDD").Cells(Target.Row, 55)) Then Sheets("BDD").Cells(Target.Row, 55) = Sheets("BDD").Cells(cel.Row, 55)
  
End If

End Sub

cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

K
Réponses
0
Affichages
730
K
B
Réponses
2
Affichages
2 K
bastienb
B
J
Réponses
4
Affichages
799
Just1
J
N
  • Question Question
Réponses
5
Affichages
3 K
P
Réponses
3
Affichages
7 K
M
Réponses
2
Affichages
1 K
machoucha
M
D
Réponses
1
Affichages
1 K
Dtekte
D
R
Réponses
2
Affichages
1 K
ravenolhm
R
T
Réponses
22
Affichages
6 K
Thibault LB
T
A
Réponses
13
Affichages
2 K
afchartier
A
V
Réponses
4
Affichages
2 K
VBdébutant
V
Retour