Reproduire formules vba sur plusieurs colonnes

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

Piaf79

XLDnaute Junior
Bonsoir le forum,

J'ai crée plusieurs formules vba qui peuvent déclencher ou non un MsgBox. Mon soucis est qu'elles ne s'appliquent pour le moment qu'à la colonne D.

Comment procéder pour qu'elles soient reproductibles sur les colonnes E, F, G, H etc. ?

Dans les formules les cellules A* et B* sont figées par contre les cellules D* doivent s'adapter aux colonnes E, F, G, H etc.

Je vous joints un fichier pour exemple.

Merci d'avance pour votre aide
 

Pièces jointes

Re : Reproduire formules vba sur plusieurs colonnes

bonsoir,
s'il y a un autre moyen que de réécrire du code je ne connais pas.
par contre une mise en forme conditionnelle serait plus facile à utiliser et recopier...
 
Re : Reproduire formules vba sur plusieurs colonnes

Bonsoir nicopec,
J'ai effectué la réécriture du code... mais vba me met "Erreur de compilation : procédure trop grande".
Existe t il un moyen de réduire le code pour "échapper à ce bug ?
Merci.
Piaf79
 
Re : Reproduire formules vba sur plusieurs colonnes

sur une procédure classique on peut segmenter en plusieurs sub qu'on appelle mais dans ce cas là je ne sais pas

c'est sûr que le message est sympa mais une MEFC serait plus facile à mettre en place
 
Re : Reproduire formules vba sur plusieurs colonnes

Bonjour Piaf79, nicopec

Un essai de transposition de ce qui existe pour la colonne D à toutes les colonnes:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim MaCol As Integer, MaLig As Integer, MaSomme As Long
 If Target.Count > 1 Then Exit Sub
 If Target.Column > 3 And Target.Column < 14 Then
    MaCol = Target.Column
    MaLig = Target.Row
    
    If Not IsEmpty(Cells(1, MaCol)) Then
        If MaLig = 5 And [$B$5] <> Target And Target > "0" Then MesPerso [$A$5], MaCol
        If MaLig >= 6 And MaLig <= 11 Then
            MaSomme = Application.Sum(Range(Cells(6, MaCol), Cells(11, MaCol)))
            If [$B$6] <> MaSomme And MaSomme > 0 Then MesPerso [$A$6], MaCol
        End If
        If MaLig >= 12 And MaLig <= 16 Then
            MaSomme = Application.Sum(Range(Cells(12, MaCol), Cells(16, MaCol)))
            If [$B$12] <> MaSomme And MaSomme > 0 Then MesPerso [$A$12], MaCol
        End If
        If MaLig >= 17 And MaLig <= 21 Then
            MaSomme = Application.Sum(Range(Cells(17, MaCol), Cells(21, MaCol)))
            If [$B$17] <> MaSomme And MaSomme > 0 Then MesPerso [$A$17], MaCol
        End If
    End If
 End If
End Sub
et
Code:
Sub MesPerso(Art, Col)
         MsgBox "La quantité de l'article " & Art & " n'est pas respectée pour " & Cells(4, Col) & " " & Cells(3, Col), vbExclamation, "Module de gestion"
End Sub

à copier à la suite du code précédent.

A tester

A+
 
Re : Reproduire formules vba sur plusieurs colonnes

Paf,
Merci beaucoup pour ce code, c'est parfait ainsi !
J'avais commencer à travailler sur la MEFC mais c'est clair que l'affichage du MsgBox est plus sympa.
Bonne journée à toi, au forum.
Piaf79
 
- 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

Réponses
12
Affichages
675
Réponses
4
Affichages
558
Retour