VBA - Si même ligne > La remplacer

Bonjour,

Vous trouverez en pièce jointe un exemple de ce que je veux faire avec le code que j'ai déjà fais.

En gros avec mon Excel, je dois choisir un champ 2 qui va dépendre du champ 1 après ça, je peux remplir le champ 3 pour que ces 3 champs soient mis en une ligne sur un tableau qui se trouve sur une autre feuille.

Je souhaite que si il y a déjà une ligne avec le champ 1 et 2 identiques à ce que l'on veut insérer, que cela écrase la ligne avec le nouveau champ 3 dans le tableau de l'autre feuille. (Pour éviter d'avoir deux fois la même chose quoi.

Ce sera plus explicite en visualisant mon Excel.

Chose à part, est-il possible d'empêcher l'insertion si les 3 champs ne sont pas renseignés ?

Merci d'avance si vous avez des infos sur tout ça.

Bonjour

J'espère que ça correspond à tes attentes

A+ François

Bonjour

Bonjour à tous

Une variante

Bye !

Bonjour à vous deux,

Merci pour votre contribution !

fanfan 38 > Merci, cela correspond exactement à ce que je souhaitais faire !

gmb > Merci pour cette variante, c'est intéressant pour moi pour apprendre !

Bonne journée à vous !

Fanfan38 > Je reviens vers toi car j'ai essayé d'intégrer ton code dans mon Excel en l'adaptant mais il ne fonctionne plus, cela rajoute une ligne même si la ligne est identique à l'ancienne. Serait-il possible d'avoir des infos sur le fonctionnement de chaque lignes du code ?

Merci !

Bonjour

Ci joint chaque ligne expliquée

Sub Insertion()
  If Len(Range("C5").Value) = 0 Then MsgBox ("Il manque des données"): Exit Sub 'controle si c5 est rempli
  If Len(Range("C10").Value) = 0 Then MsgBox ("Il manque des données"): Exit Sub 'controle si c10 est rempli
  If Len(Range("C15").Value) = 0 Then MsgBox ("Il manque des données"): Exit Sub 'controle si c15 est rempli
  Dim trouve As Range, adresse1 As String 'déclaration des variables
  Set trouve = Sheets("Feuille2").Columns(1).Find(Range("C5").Value) 'recherche c5 sur feuille 2
  If Not trouve Is Nothing Then 'si trouvé
   adresse1 = trouve.Address
   Do Until trouve Is Nothing 'boucle
      If Sheets("Feuille2").Range("B" & trouve.Row).Value = Range("C10").Value Then 'rempli colonne b
        Sheets("Feuille2").Range("C" & trouve.Row).Value = Range("C15").Value 'rempli colonne c
        MsgBox ("Modification effectuée")
        GoTo raz 'va à la fin
      End If
      Set trouve = Sheets("Feuille2").Columns(1).FindNext(trouve) 'continue la recherche si colonne b differente de c10
      If trouve.Address = adresse1 Then Exit Do 'sort de la boucle si il ne trouve pas
   Loop 'boucle
  End If 'si il a pas trouvé ajoute une ligne et enregistre les données sur feuille 2
  Sheets("Feuille2").Range("Tableau1").ListObject.ListRows.Add (1)
  Sheets("Feuille2").Range("A2") = Sheets("Feuille1").Range("C5")
  Sheets("Feuille2").Range("B2") = Sheets("Feuille1").Range("C10")
  Sheets("Feuille2").Range("C2") = Sheets("Feuille1").Range("C15")
  MsgBox ("Fiche ajoutée")
raz:
  Range("C5").Value = ""
  Range("C10").Value = ""
  Range("C15").Value = ""
  Range("A1").Activate
End Sub

A+ François

Bonjour François,

Merci pour ta réponse, c'est maintenant plus clair pour moi et j'ai pu corriger mon erreur.

Mon erreur venait de la ligne suivante :

Set trouve = Sheets("Feuille2").Columns(1).Find(Range("C5").Value) 'recherche c5 sur feuille 2

J'ai vu "Feuille2" qui correspond à la feuille avec le tableau et "C5" qui correspond à la fin du tableau du coup sur mon Excel je pensais modifier par rapport à la fin du tableau mais ce n'était pas du tout ça. "C5" correspond au CHAMP1 de la "Feuille1". Erreur de ma part. :)

Merci beaucoup !

Rechercher des sujets similaires à "vba meme ligne remplacer"