Remplissage de colonne automatique via VBA

Traouck

XLDnaute Junior
Bonjour,
Je voudrais remplir automatiquement la colonne G en Fonction de F.
J'ai taper ce code dans VBA, mais cela ne marche pas et je ne trouve pas la solution

Private Sub Worksheet_Change2(ByVal Target As Range)
'rempilssage automatique des cellules
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Or Target.Row = 1 Then Exit Sub
If Target.Value = "Free" Then
Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
ElseIf Target.Value = "Orange" Then
Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
ElseIf Target.Value = "Bouygues Tél" Then
Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
ElseIf Target.Value = "Ecofleet" Then
Target.Offset(0, 1).Value = Sheets("listes").Range("N3").Value
Else
Target.Offset(0, 1).Value = ""
End If
End Sub

Quelqu'un peu m'aider?
Merci d'avance
Cédric
 

Traouck

XLDnaute Junior
je pense que vos versions sans la première marche, sauf que j'ai absolument besoin de la 1. j'ai essayé de rajouter toutes les versions (une par une) a la fin de la première, juste avant le end sub. Mais ca ne veut pas remplir automatiquement...
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Mais il y a peut être moyen d'incorporer la deux dans la une.

Oui, il faut tester les conditions dans la seule Worksheet_Change(ByVal Target As Range) et exécuter le code qui va bien:
VB:
Sub Worksheet_Change(ByVal Target As Range)
if "Les conditions 1 sont OK" alors
    Executer instructions 1
sinon si "Les conditions 2 sont OK" alors
    Executer instructions 2
sinon
    nous envoyer un fichier exemple anonymisé avec les codes
fin si
 

Staple1600

XLDnaute Barbatruc
Re,

[début du "titillement" post digestif ]
Oui, il faut tester les conditions dans la seule Worksheet_Change(ByVal Target As Range) et exécuter le code qui va bien:
VB:
Sub Worksheet_Change(ByVal Target As Range)
if "Les conditions 1 sont OK" alors
    Executer instrictions 1
sinon si "Les conditions 2 sont OK" alors
    Executer instrictions 2
fin si
Qu'est-ce donc que des instrictions?
Je suis fort contrit de ne point avoir cela dans mon VBE ;)
[/fin du "titillement" post digestif ;))]
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

En modifiant le moins possible votre code:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Count > 1 Then Exit Sub
  If Target.Row = 1 Then Exit Sub

  If Target.Column = 5 Then
    If Target.Value = "Clients" Then
      Target.Offset(0, 2).Value = Sheets("Listes").Range("R3").Value
      Target.Offset(0, 4).Value = Sheets("Renseignements").Range("H5").Value
      Target.Offset(0, 5).Value = Sheets("listes déroulante").Range("F3").Value
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F5").Value
    ElseIf Target.Value = "Taxes et charges" Then
      Target.Offset(0, 4).Value = Sheets("Renseignements").Range("H5").Value
      Target.Offset(0, 5).Value = Sheets("listes déroulante").Range("F2").Value
      Target.Offset(0, 6).Value = Sheets("listes déroulante").Range("G2").Value
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F6").Value
    ElseIf Target.Value = "Effectifs" Then
      Target.Offset(0, 4).Value = Sheets("Renseignements").Range("H5").Value
      Target.Offset(0, 5).Value = Sheets("listes déroulante").Range("F2").Value
      Target.Offset(0, 6).Value = Sheets("listes déroulante").Range("G3").Value
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F7").Value
    ElseIf Target.Value = "Autres" Then
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F7").Value
    ElseIf Target.Value = "Fournisseurs" Then
      Target.Offset(0, 2).Value = Sheets("Listes").Range("L3").Value
      Target.Offset(0, 4).Value = Sheets("Renseignements").Range("H5").Value
      Target.Offset(0, 5).Value = Sheets("listes déroulante").Range("F2").Value
      Target.Offset(0, 6).Value = Sheets("listes déroulante").Range("G2").Value
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F6").Value
    ElseIf Target.Value = "" Then
      Target.Offset(0, 2).Value = ""
      Target.Offset(0, 4).Value = ""
      Target.Offset(0, 5).Value = ""
      Target.Offset(0, 6).Value = ""
      Target.Offset(0, 7).Value = ""
    Else
      Target.Offset(0, 4).Value = Sheets("Renseignements").Range("H5").Value
      Target.Offset(0, 5).Value = Sheets("listes déroulante").Range("F2").Value
      Target.Offset(0, 6).Value = Sheets("listes déroulante").Range("G2").Value
      Target.Offset(0, 7).Value = Sheets("Renseignements").Range("F6").Value
    End If
  ElseIf Target.Column = 6 Then
    If Target.Value = "Free" Then
      Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
    ElseIf Target.Value = "Orange" Then
      Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
    ElseIf Target.Value = "Bouygues Tél" Then
      Target.Offset(0, 1).Value = Sheets("listes").Range("N14").Value
    ElseIf Target.Value = "Ecofleet" Then
      Target.Offset(0, 1).Value = Sheets("listes").Range("N3").Value
    Else
      Target.Offset(0, 1).Value = ""
    End If
  End If
End Sub
 

Traouck

XLDnaute Junior
>En fait c,'est presque ça.
Quand je remplis la case frais généraux et free, ça remplis bien le reste.
Par contre quand le mets autres choses que frais généraux et que je tape le nom (client ou fournisseurs...) ça m’efface le remplissage de la case suivante...
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote