Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Je constate, et de plus en plus souvent, que de nos jours "les gens", donc "en général", "globalement", refusent d'apprendre !
Tu dis qu'il y a jusqu'à 53 semaines dans une année, mais ils restent bloqués sur leur "52"...
Tu dis que 4 331 056 octets ça fait 4,33 Mo, mais ils restent bloqués sur 4 331 056 octets = 4,13 Mb (notez ici la double erreur !)...
Tu dis qu'un SSD de 500 Go fait 500 Go même après formatage, ils restent bloqués sur l'idée qu'un SSD annoncé à 500 Go une fois formaté fait à peu près 465 Go...
Sans parler de ceux qui ont encore leur abonnement téléphonique chez France Télécom, voire "aux PTT", ou ceux qui ont regardé Antenne 2 ou FR3 samedi dernier...
etc.
Bref, mon petit Soso, tout cela me rend bien triste ! 😭 😭 😭 😭 😭
ça, c'est normal ! y'a que les privilégiés qui bénéficient d'un 13ème mois de salaire qui savent compter avec 53 semaines ! nous autres, pauvres mortels qui n'avons que 12 mois de salaires dans l'année, nous comptons avec 52 semaines car 1 an = 52,1429 semaines ! (relire mon post #16) ; et peu importe si l'année est bissextile ou non : à 1 jour près en plus ou en moins, ça change rien au nombre de semaines ! 😜
Voyez le fichier joint et cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [A:A], UsedRange)
If Target Is Nothing Then Exit Sub
Dim o As Object, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
'---RAZ---
For Each o In DrawingObjects
If Not Intersect(o.TopLeftCell, Target) Is Nothing Then o.Delete
Next
'---copier-coller---
Set c = Sheets("MODELE").[A1]
For Each Target In Target 'si entrées/effacements multiples
If Target Like "#" Or Target Like "##" Then
c = Target
c.Copy Target
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
L'avantage de cette méthode c'est que les nombres entrés sont utilisables, ce qui n'est pas le cas avec la fonction UNICAR qui renvoie un texte.
Et bien sûr tous les nombres avec 1 ou 2 chiffres sont traités.
Bonjour Job75
Ce que j'ai voulu dire c'est que je ne sais pas modifier la macro pour la rendre active dans n'importe quel cellule de mon projet.
J'ai donc crée le chiffre qui m’intéresse dans ton exemple et je le copie colle dans mon tableau et là la transcription se fait mal.
Si non effectivement le fonctionnement est bon, pour des chiffres >50.
Pourquoi le cercle est bleu, c'est volontaire ?
Pour cela voyez les fichiers (3) et (4) joints avec cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "MODELE" Then Exit Sub
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
Dim o As Object, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
'---RAZ---
For Each o In Sh.DrawingObjects
If Not Intersect(o.TopLeftCell, Target) Is Nothing Then o.Delete
Next
'---copier-coller---
Set c = Sheets("MODELE").[A1]
For Each Target In Target 'si entrées/effacements multiples
If Target Like "#" Or Target Like "##" Or Target Like "###" Then
c = Target
c.Copy Target
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro s'exécute dans n'importe quelle cellule de n'importe quelle feuille autre que "MODELE".
Pour cela voyez les fichiers (3) et (4) joints avec cette macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "MODELE" Then Exit Sub
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
Dim o As Object, c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
'---RAZ---
For Each o In Sh.DrawingObjects
If Not Intersect(o.TopLeftCell, Target) Is Nothing Then o.Delete
Next
'---copier-coller---
Set c = Sheets("MODELE").[A1]
For Each Target In Target 'si entrées/effacements multiples
If Target Like "#" Or Target Like "##" Or Target Like "###" Then
c = Target
c.Copy Target
End If
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro s'exécute dans n'importe quelle cellule de n'importe quelle feuille autre que "MODELE".
Ça devient intéressant;
Par contre le cercle n'est pas solidaire du chiffre. c'est a dire que si je le déplace a droite ou gauche ils se ne suivent pas...
ça, c'est normal ! y'a que les privilégiés qui bénéficient d'un 13ème mois de salaire qui savent compter avec 53 semaines ! nous autres, pauvres mortels qui n'avons que 12 mois de salaires dans l'année, nous comptons avec 52 semaines car 1 an = 52,1429 semaines ! (relire mon post #16) ; et peu importe si l'année est bissextile ou non : à 1 jour près en plus ou en moins, ça change rien au nombre de semaines !
Ça devient intéressant;
Par contre le cercle n'est pas solidaire du chiffre. c'est a dire que si je le déplace a droite ou gauche ils se ne suivent pas...
- 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