Remplissage de colonne automatique via VBA

  • Initiateur de la discussion Initiateur de la discussion Traouck
  • 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 !

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
 
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...
 
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
 
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 😉)]
 
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
 
>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...
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
484
Réponses
5
Affichages
245
Réponses
2
Affichages
154
Réponses
4
Affichages
243
Retour