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 IfMerci 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 IfAdapter 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 - 13et 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 - 13Mais 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 IfA+