Raccourcir une macro
Résolu
stitchbouck
Messages postés
135
Date d'inscription
Statut
Membre
Dernière intervention
-
stitchbouck Messages postés 135 Date d'inscription Statut Membre Dernière intervention -
stitchbouck Messages postés 135 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Raccourcir une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Raccourcir url - Guide
- Raccourcir mp3 - Guide
7 réponses
Bonjour,
Déjà, pourquoi faire 3 boucles alors qu'elles sont identiques ?
Ensuite, le début de ton msgbox étant identique, tu pourrais le mettre dans une variable
Un truc du genre
Déjà, pourquoi faire 3 boucles alors qu'elles sont identiques ?
Ensuite, le début de ton msgbox étant identique, tu pourrais le mettre dans une variable
Un truc du genre
Dim msgStart as String Dim msg2 as String Dim sh as WorkSheet Set Sh = Sheets("Compteur électrique") msgStart = "Erreur : relevé 'Compteur électrique' inférieur au précédent." & Chr(10) & "En colonne " msg2 = "Vérifiez et modifiez sur feuille 'Ordre de relevé'" & "en colonne " For i = 6 To Range("A65536").End(xlUp).Row If IsNumeric(Sh.Cells(i - 1, 10)) And Sh.Cells(i, 10) <> "" And Sh.Cells(i, 10) < Sh.Cells(i - 1, 10).Value Then MsgBox (msgStart & "10" & Chr(10) & msg2 & "27" & "puis relancez le transfert de donnée. ") End If If IsNumeric(Sh.Cells(i - 1, 11)) And Sh.Cells(i, 11) <> "" And Sh.Cells(i, 11) < Sh.Cells(i - 1, 11).Value Then MsgBox (msgStart & "11" & Chr(10) & msg2 & "28" & "puis relancez le transfert de donnée. ") End If If IsNumeric(Sh.Cells(i - 1, 12)) And Sh.Cells(i, 12) <> "" And Sh.Cells(i, 12) < Sh.Cells(i - 1, 12).Value Then MsgBox (msgStart & "12" & Chr(10) & msg2 & "29" & "puis relancez le transfert de donnée. ") End If Next
jordane45
Messages postés
38486
Date d'inscription
Statut
Modérateur
Dernière intervention
4 752
Dans l'idée de michel, toujours pour éviter de faire plusieurs boucles (et donc ralentir le programme...)
Bonjour,
peut-^tre avec une macro parametrée
mais il m'est impossible de vérifier n'ayant pas le classeur sous les yeux
ta ligne de code pourrait être plus concise (et donc lisible) en utilisant les blocs
peut-^tre avec une macro parametrée
Option Explicit
'------------------------------------------------
Sub vérifier_compteurs()
Dim Colonne As Byte
For Colonne = 10 To 12 (12? etc)
Call analyser_compteur(Colonne)
Next
End Sub
Sub analyser_compteur(Col)
Dim i As Integer
For i = 6 To Range("A65536").End(xlUp).Row
If IsNumeric(Sheets("Compteur électrique").Cells(i - 1, Col)) And Sheets("Compteur électrique").Cells(i, Col) <> "" And Sheets("Compteur électrique").Cells(i, Col) < Sheets("Compteur électrique").Cells(i - 1, Col).Value Then
MsgBox ("Erreur : relevé 'Compteur électrique' inférieur au précédent." & Chr(10) & "En colonne " & Col & Chr(10) & "Vérifiez et modifiez sur feuille 'Ordre de relevé'" & "en colonne " & Col + 17 & "puis relancez le transfert de donnée. ")
End If
Next
End Sub
mais il m'est impossible de vérifier n'ayant pas le classeur sous les yeux
ta ligne de code pourrait être plus concise (et donc lisible) en utilisant les blocs
Waouh ! merci à tous !
je décortique tout ça, je teste dans mon classeur et reviens vers vous !!
encore merci :)
je décortique tout ça, je teste dans mon classeur et reviens vers vous !!
encore merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je me demandais pourquoi dans la msgbox vous mettiez "col +17". Et j'ai compris, mais la feuille "ordre de donnée" n'a pas toujours des colonnes qui se suivent (dsl, je n'avais pas pensé à ce point important). Ici on a 27 28 29 , mais pour d'autres c'est complètement disparate, donc "col +17" ne fonctionne plus.
J'en conclue que c'est la réponse de Jordane qui me convient le plus, car il faut malgré tout indiquer la colonne nominativement.
J'aimerai envoyer un extrait du fichier pour que ça soit plus clair, mais je n'arrive pas à trouver comment on fait... ?
J'en conclue que c'est la réponse de Jordane qui me convient le plus, car il faut malgré tout indiquer la colonne nominativement.
J'aimerai envoyer un extrait du fichier pour que ça soit plus clair, mais je n'arrive pas à trouver comment on fait... ?
Tu peux le déposer sur un site comme cijoint
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Je t'ai répondu en te faisant remarquer que tu m'avais bossé pour rien mais le dénommé Jordane, tout imbu de sa médaille de modérateur, l'a censuré
Pour rien ??? ben non... je n'avais pas penser qu'on pouvait faire ce que tu m'as donné (Sub vérifier_compteurs()).
Sois bien sur qu'à mon niveau limité, toute aide de ce type me fait avancer !!
alors, oui, il manquait un paramètre, d'importance qui plus est, mais rien n'est jeté : ça me servira probablement ailleurs.
Donc, merci à vous deux pour ce beau coup de main :)
Sois bien sur qu'à mon niveau limité, toute aide de ce type me fait avancer !!
alors, oui, il manquait un paramètre, d'importance qui plus est, mais rien n'est jeté : ça me servira probablement ailleurs.
Donc, merci à vous deux pour ce beau coup de main :)
Bonjour,
j'espère que vous avez passé un agréable mois de mai !! :)
https://www.cjoint.com/c/HEwiPGsVIVD
Ci-joint le lien vers le fichier entier pas encore modifier par vos remarques. j'ai bien compris que je pouvais simplifier la lecture au moins par des déclarations pour simplifier le nom des feuilles...
Si vous voyez d'autres simplification, je suis preneur !!
Merci à vous et bonne journée !
j'espère que vous avez passé un agréable mois de mai !! :)
https://www.cjoint.com/c/HEwiPGsVIVD
Ci-joint le lien vers le fichier entier pas encore modifier par vos remarques. j'ai bien compris que je pouvais simplifier la lecture au moins par des déclarations pour simplifier le nom des feuilles...
Si vous voyez d'autres simplification, je suis preneur !!
Merci à vous et bonne journée !