Comment concaténer ce code pour l'appliquer à 50 cellules consécutives

Bonjour,

Je cherche à concaténer ce code afin de l'appliquer sur 50 cellules consécutives.

'Macro gestion COMPTEUR DEMARRAGE MOTEUR_48

If Target.Address = "$D$53" Then

Application.EnableEvents = False

If Range("D53").Value = "Pompe" Then

Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D3")

ElseIf Range("D53").Value = "Racleur sans pressurisation" Then

Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D4")

ElseIf Range("D53").Value = "Racleur avec pressurisation" Then

Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D5")

ElseIf Range("D53").Value = "Aérateur" Then

Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D6")

ElseIf Range("D53").Value = "Autre" Then

Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D7")

ElseIf Range("D53").Value = "" Then

Range("G53") = ""

End If

Application.EnableEvents = True

End If

'Macro gestion COMPTEUR DEMARRAGE MOTEUR_49

If Target.Address = ("$D$54") Then

Application.EnableEvents = False

If Range("D54").Value = "Pompe" Then

Range("G54") = Sheets("DONNEES DE REFERENCE OPTING").Range("D3")

ElseIf Range("D54").Value = "Racleur sans pressurisation" Then

Range("G54") = Sheets("DONNEES DE REFERENCE OPTING").Range("D4")

ElseIf Range("D54").Value = "Racleur avec pressurisation" Then

Range("G54") = Sheets("DONNEES DE REFERENCE OPTING").Range("D5")

ElseIf Range("D54").Value = "Aérateur" Then

Range("G54") = Sheets("DONNEES DE REFERENCE OPTING").Range("D6")

ElseIf Range("D54").Value = "Autre" Then

Range("G54") = Sheets("DONNEES DE REFERENCE OPTING").Range("D7")

ElseIf Range("D54").Value = "" Then

Range("G54") = ""

End If

Application.EnableEvents = True

End If

Merci d'avance.

Bonjour,

Avec le premier Range à adapter :

If Not Intersect(Target, Range("D53:D103")) Is Nothing Then
    Application.EnableEvents = False
    Select Case Target.Value
        Case "Pompe"
            Cells(Target.Row, 7) = Sheets("DONNEES DE REFERENCE OPTING").Range("D3")
        Case "Racleur sans pressurisation"
            Cells(Target.Row, 7) = Sheets("DONNEES DE REFERENCE OPTING").Range("D4")
        Case "Racleur avec pressurisation"
            Cells(Target.Row, 7) = Sheets("DONNEES DE REFERENCE OPTING").Range("D5")
        Case "Aérateur"
            Cells(Target.Row, 7) = Sheets("DONNEES DE REFERENCE OPTING").Range("D6")
        Case "Autre"
            Cells(Target.Row, 7) = Sheets("DONNEES DE REFERENCE OPTING").Range("D7")
        Case ""
            Cells(Target.Row, 7) = ""
    End Select
    Application.EnableEvents = True
End If

Merci mec, franchement hyper pratique car le code VBA est limité à 64kb et je dépassais.

Bonjour,

une proposition:

If Not Intersect(Target, Range("D53:D70 ")) Is Nothing Then    'plage à adapter
   lig = Target.Row
   Application.EnableEvents = False
   If Range("D" & lig).Value = "Pompe" Then
      Range("G" & lig) = Sheets("DONNEES DE REFERENCE OPTING").Range("D3")
      ElseIf Range("D53").Value = "Racleur sans pressurisation" Then
      Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D4")
      ElseIf Range("D53").Value = "Racleur avec pressurisation" Then
      Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D5")
      ElseIf Range("D53").Value = "Aérateur" Then
      Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D6")
      ElseIf Range("D53").Value = "Autre" Then
      Range("G53") = Sheets("DONNEES DE REFERENCE OPTING").Range("D7")
      ElseIf Range("D53").Value = "" Then
      Range("G53") = ""
   End If
  Application.EnableEvents = True
End If

Adapter la plage où la macro doit se déclencher.

reste à modifier tous les Range("G53") en Range("G" & lig) et les Range("D53") en Range("D" & lig)

A+

Edit : Bonjour oyobrans J'arrive trop tard et moins bien !!

En tout cas merci d'avoir pris le temps de répondre.

Re-bonjour messieurs, une nouvelle demande pour vous qui maitrisez Excel :

Je souhaites gérer le nombre de décimales allant de 0 à 3 pour chacun de mes compteurs et cela de maniére indivuel pour chacun d'entre eux.

Ces données sont stockées dans les cellules M5 à M24 (pour chaque compteur)

Ensuite je souhaiterai modifier le nombre de decimales de la colonne B de la feuille 2.DONNEES COMPTEURS pour la cellule M5,

de la colonne E de la feuille 2.DONNEES COMPTEURS pour la cellule M6, de la colonne H de la feuille 2.DONNEES COMPTEURS pour la cellule M7, etc...

J'ai commencé à écrire ce bout de code mais je ne maitrise pas tout, il faudra passer les colonnes en arguments et également écrire les bonnes valeurs pour le NUMBERFORMAT.

Merci d'avance de vos réponses.

'Macro gestion affichage NBRE DE DECIMALES COMPTEURS

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then

Application.EnableEvents = False

Select Case Target.Value

Case "0"

Sheets("2.DONNEES COMPTEURS").Columns("B:B").NumberFormat = “XXXX”

Case "1"

Sheets("2.DONNEES COMPTEURS").Columns("B:B").NumberFormat = "XXXX"

Case "2"

Sheets("2.DONNEES COMPTEURS").Columns("B:B").NumberFormat = "XXXX"

Case "3"

Sheets("2.DONNEES COMPTEURS").Columns("B:B").NumberFormat = "XXXX"

End Select

Application.EnableEvents = True

End If

Pour déterminer la colonne à modifier:

Col = Target.row * 3  - 13

et dans Columns("B:B") remplacer "B:B" par : Col

Un petit coup d'enregistreur de macro vous aurait donné les formats cherchés:

NumberFormat = "0.000"

NumberFormat = "0.00"

.../....

A+

Voici mon nouveau code mais je pense que Col devrait certainement être ailleurs, car cela ne fonctionne pas.

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then

Application.EnableEvents = False

Col = Target.Row * 3 - 13

Select Case Target.Value

Case "0"

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0"

Case "1"

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.0"

Case "2"

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.00"

Case "3"

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.000"

End Select

Application.EnableEvents = True

End If

Je me suis concentré sur le formatage de la bonne colonne, et pas regardé le reste.

dans la plage M5:M24 que trouve-t-on comme valeur ? 0,1,2 ou 3?

si oui : pour chaque Case supprimer les " " qui impliquent du texte. (Case 0 à la place de case "0")

si non : ?

Salut j'ai bien modifié le code comme tu m'as dit car en effet dans les cases M5:M24, en effet les valeurs peuvent varieées de 0 à 3.

Par contre non fonctionnel.

En fait je n'ai pas compris cette ligne : Col = Target.Row * 3 - 13 (le -13 sort d'ou ?)

'Macro gestion affichage NBRE DE DECIMALES COMPTEURS

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then

Application.EnableEvents = False

Col = Target.Row * 3 - 13

Select Case Target.Value

Case 0

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0"

Case 1

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.0"

Case 2

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.00"

Case 3

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0.000"

End Select

Application.EnableEvents = True

End If

je souhaiterai modifier le nombre de decimales de la colonne B de la feuille 2.DONNEES COMPTEURS pour la cellule M5,

de la colonne E de la feuille 2.DONNEES COMPTEURS pour la cellule M6, de la colonne H de la feuille 2.DONNEES COMPTEURS pour la cellule M7, etc...

j'ai traduis ça comme ça :

pour M5 je modifie colonne B (2)

M6 --> E (5)

M7 --> H (8)

.../...

la relation entre le N° de ligne de colonne M et le N° de colonne à modifier est:

N° Colonne =N° Ligne * 3 -13

pour M5 : 5 * 3 - 13 = 15 - 13 = 2 donc colonne B

pour M6 : 6 * 3 - 13 = 18 - 13 = 5 donc colonne E

pour M7 : 7 * 3 - 13 = 21 - 13 = 8 donc colonne H

.../...

avec Col = Target.row * 3 - 13 Col est une variable qui contient le N° de colonne à traiter.

écrire

Sheets("2.DONNEES COMPTEURS").Columns("Col").NumberFormat = "0"

n'a aucun sens, puisque "Col" tel qu'écrit n'est plus la variable contenant le N° de colonne mais tout simplement le texte "Col".

Ca me paraissait tellement évident que je l'avais quand même précisé :

...et dans Columns("B:B") remplacer "B:B" par : Col...

Bonne suite

Bonsoir,

En fait je n'ai pas compris cette ligne : Col = Target.Row * 3 - 13 (le -13 sort d'ou ?)

Il sort de la position dans l'alphabet de la lettre (colonne) M dans l'alphabet

Il sort de la position dans l'alphabet de la lettre (colonne) M dans l'alphabet

Heu....

Si au lieu d'être en colonne M la sélection se faisait en colonne A, on aurait quand même:

Col = Target.Row * 3 - 13

Mais c'était peut-être une boutade ...

A+

Bonjour, oui j'ai compris ca sert pour le décalage des colonnes, merki pour vos retours mais toujours non fonctionnel.

Ci-joint mon dernier code :

'Macro gestion affichage NBRE DE DECIMALES COMPTEURS

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then

Application.EnableEvents = False

Col = Target.Row * 3 - 13

Select Case Target.Value

Case 0

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0"

Case 1

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.0"

Case 2

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.00"

Case 3

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.000"

End Select

Application.EnableEvents = True

End If

Merci d'avance

Une copie du classeur ?

Bonjour,

Désolé pour mon retard, veuillez trouver ci-joint mon fichier.

Lorsque je choisi dans la liste de l'onglet données du site dans les cellules M5 à M9, je souhaiterai que les colonnes associées à chaque compteur respectif situé dans l'onglet 2.DONNES COMPTEURS affiche le bon nombre de décimales.

Ci-joint le dernier code VBA devant gérer cette fonction :

'Macro automatique Worksheet 2.DONNEES COMPTEURS

'Macro gestion affichage NBRE DE DECIMALES COMPTEURS

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then

Application.EnableEvents = False

Col = Target.Row * 3 - 13

Select Case Target.Value

Case 0

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0"

Case 1

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.0"

Case 2

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.00"

Case 3

Sheets("2.DONNEES COMPTEURS").Columns(Col).NumberFormat = "0.000"

End Select

Application.EnableEvents = True

End If

Cordialement,

Bonjour,

avec le classeur ça va mieux.

A intégrer dans Private Sub Worksheet_Change(ByVal Target As Range) de la feuille DONNEES DU SITE et à tester:

If Not Intersect(Target, Range("M5:M24")) Is Nothing Then
     Application.EnableEvents = False
     col = Target.Row * 3 - 13

     With Sheets("2.DONNEES COMPTEURS")
     derl = .Cells(Cells.Rows.Count, col).End(xlUp).Row
     Select Case Target.Value
       Case 0
        .Range(.Cells(4, col), .Cells(derl, col)).NumberFormat = "0"
       Case 1
        .Range(.Cells(4, col), .Cells(derl, col)).NumberFormat = "0.0"
       Case 2
        .Range(.Cells(4, col), .Cells(derl, col)).NumberFormat = "0.00"
       Case 3
        .Range(.Cells(4, col), .Cells(derl, col)).NumberFormat = "0.000"
     End Select
     End With
Application.EnableEvents = True
End If

A+

Rechercher des sujets similaires à "comment concatener code appliquer consecutives"