Bonjour à tous,
J'ai réalisé un fichier qui permet de créer des liaisons entre départements (d'un pays vers le même pays ou d'un pays vers un autre pays). J'aimerais le joindre à ce post mais il fait 391 ko.
Afin de faciliter la saisie des données, j'ai réalisé la macro ci-dessous (je l'ai mise en quote afin de faciliter la lecture):
De plus, j'ai un autre problème relatif à cette macro. J'aurais en fait voulu qu'elle fonctionne d'une manière un peu différente. J'ai donc essayé de la manière suivante, mais ça fait planter Excel (visiblement, la macro s'emballe et n'arrive plus à s'arrêter) :
J'ai réalisé un fichier qui permet de créer des liaisons entre départements (d'un pays vers le même pays ou d'un pays vers un autre pays). J'aimerais le joindre à ce post mais il fait 391 ko.
Afin de faciliter la saisie des données, j'ai réalisé la macro ci-dessous (je l'ai mise en quote afin de faciliter la lecture):
Cette macro fonctionne très bien, seulement voilà, elle ne s'applique qu'à ligne 2. Mon fichier contient pour l'instant 50 lignes mais quand je vais commencer à rentrer les données, il va s'agrandir. Par ailleurs, il est possible que je rajoute des données qui ne soient pas relatives aux liaisons en dessous des liaisons (donc dans le même onglet). Je ne souhaite donc pas que la macro s'applique aux colonnes entières. Le mieux ce serait que la macro se copie de manière incrémentée, comme pour les formules (ou qu'elle change pour s'appliquer à 2 lignes).Private Sub Worksheet_Change(ByVal Target As Range)
If Range("H2").Value <> 0 And Range("I2").Value = 0 And Range("G2").Value = 0 Then
Range("I2").Value = Range("W2").Value
Range("G2").Value = Range("Y2").Value
ElseIf Range("I2").Value <> 0 And Range("H2").Value = 0 And Range("G2").Value = 0 Then
Range("H2").Value = Range("X2").Value
Range("G2").Value = Range("Y2").Value
ElseIf Range("H2").Value <> 0 And Range("I2").Value = 0 And Range("G2").Value <> 0 Then
Range("I2").Value = Range("W2").Value
ElseIf Range("I2").Value <> 0 And Range("H2").Value = 0 And Range("G2").Value <> 0 Then
Range("H2").Value = Range("X2").Value
ElseIf Range("I2").Value <> 0 And Range("H2").Value <> 0 And Range("G2").Value = 0 Then
Range("G2").Value = Range("Y2").Value
End If
If Range("L2").Value <> 0 And Range("M2").Value = 0 And Range("K2").Value = 0 Then
Range("M2").Value = Range("AG2").Value
Range("K2").Value = Range("AI2").Value
ElseIf Range("M2").Value <> 0 And Range("L2").Value = 0 And Range("K2").Value = 0 Then
Range("L2").Value = Range("AH2").Value
Range("K2").Value = Range("AI2").Value
ElseIf Range("L2").Value <> 0 And Range("M2").Value = 0 And Range("K2").Value <> 0 Then
Range("M2").Value = Range("AG2").Value
ElseIf Range("M2").Value <> 0 And Range("L2").Value = 0 And Range("K2").Value <> 0 Then
Range("L2").Value = Range("AH2").Value
ElseIf Range("M2").Value <> 0 And Range("L2").Value <> 0 And Range("K2").Value = 0 Then
Range("K2").Value = Range("AI2").Value
End If
End Sub
De plus, j'ai un autre problème relatif à cette macro. J'aurais en fait voulu qu'elle fonctionne d'une manière un peu différente. J'ai donc essayé de la manière suivante, mais ça fait planter Excel (visiblement, la macro s'emballe et n'arrive plus à s'arrêter) :
Voilà, je vous remercie à l'avance ! 🙂Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Range("H2").Value <> Range("H2").Value Then
Range("I2").Value = Range("W2").Value
Range("G2").Value = Range("Y2").Value
ElseIf Target.Range("I2").Value <> Range("I2").Value Then
Range("H2").Value = Range("X2").Value
Range("G2").Value = Range("Y2").Value
End If
If Target.Range("L2").Value <> Range("L2").Value Then
Range("M2").Value = Range("AG2").Value
Range("K2").Value = Range("AI2").Value
ElseIf Target.Range("M2").Value <> Range("M2").Value Then
Range("L2").Value = Range("AH2").Value
Range("K2").Value = Range("AI2").Value
End If
End Sub
Dernière édition: