Microsoft 365 Créer une boucle sur une plage de cellules

Dravol

XLDnaute Junior
Bonjour à tous,

Je cherche à créer une boucle plutôt que de créer 150 lignes de code. pouvez-vous m'aider ?

If CStr([C148]) <> "" And Intersect(ActiveCell, [D148]) Is Nothing Then _
If CStr([D148]) = "" Then [D148].Select: MsgBox "Renseignez le problème ex : HS, perdu..."
End Sub

Si je continue dans ma logique (sans boucle), je vais avoir ce même code répété jusqu'à la ligne 287.

If CStr([C149]) <> "" And Intersect(ActiveCell, [D149]) Is Nothing Then _
If CStr([D149]) = "" Then [D149].Select: MsgBox "Renseignez le problème ex : HS, perdu..."
End Sub

If CStr([C150]) <> "" And Intersect(ActiveCell, [D150]) Is Nothing Then _
If CStr([D150]) = "" Then [D150].Select: MsgBox "Renseignez le problème ex : HS, perdu..."
End Sub

etc etc...

pouvez-vous me donner la ligne de code pour une boucle de la ligne 148 à à 287 ?

Merci d'avance :)

Drav
 

Hasco

XLDnaute Barbatruc
Repose en paix
bonjour,

Euh.... Au bas de cette page, dans discussion similaires il y a des réponses à ce genre de demande dont celle de cette discussion (résolue) d'un certain @Dravol :

Faut pas exagérer quand même !
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Drav, Hasco,

je propose ce code VBA (non testé ; si besoin, à adapter) :

VB:
Option Explicit

Sub Essai()
  Dim lig&
  For lig = 148 To 287
    With Cells(lig, 3)
      If CStr(.Value) <> "" And _
          ActiveCell.Address(0, 0) <> "D" & lig Then
        If CStr(.Offset(, 1)) = "" Then
          Application.Goto .Offset(, 1), True
          MsgBox "Renseignez le problème ex : HS, perdu..."
        End If
      End If
    End With
  Next lig
End Sub

l'ennui, c'est qu'en pratique, après le message de la MsgBox, il faudrait « redonner la main » à l'utilisateur pour qu'il puisse faire une saisie dans la cellule où il manque un renseignement ; mais y'a un gros hic : pour ça, il faudrait sortir de la sub ! et si on quitte la sub, on ne peut plus continuer la boucle ! c'est dans le genre du « serpent qui se mord la queue » ! il faudrait essayer de trouver une autre méthode qui soit plus adaptée à ce que tu veux faire ; mais peut-être que si on fait la saisie dans la boucle via un InputBox, ça pourrait marcher ? à toi de voir, et bonne chance ! 🍀

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Hasco

je viens de suivre le lien que tu as indiqué dans ton post #2 ; c'est effectivement le même genre d'exo, proposé aussi par Dravol, mais ce qui est drôle, c'est que c'est un sujet du 6 janvier 2021 ! 😄 comme c'était y'a plus d'un an, je suppose que Dravol a simplement oublié son ancien exo et la réponse associée qu'il avait obtenu ! 😜

soan
 

soan

XLDnaute Barbatruc
Inactif
@Deadpool

:eek: alzheimer ? (je rigole)

non, pas alzeimer, mais n'oublie pas que certains membres du site sont très âgés (par exemple des retraités) ; et avec l'âge, la mémoire s'amenuise... 😢 il y a aussi des personnes étourdies qui oublient facilement des choses ; même si Drav est ni une personne âgée, ni étourdi, ça peut arriver à n'importe qui d'oublier quelque chose ! surtout si c'était y'a un an ! si toi tu as la chance de ne rien oublier, même après un an, alors tu peux te vanter d'avoir une mémoire d'éléphant ! 😄

🐘 pas vrai, Dumbo ? ... oui, Dumbo a confirmé ! il m'a même appris que s'il a une mémoire phénoménale, c'est pour se rappeler du chemin qu'il avait appris quand il n'était alors qu'un petit éléphanteau ! ah ? quel chemin ? celui qui mène (hélas) au cimetière des éléphants ! 😭 les braconniers chasseurs d'ivoire sont priés de passer leur chemin et de ne pas chercher à suivre mon ami Dumbo !

soan
 
Dernière édition:

Dravol

XLDnaute Junior
Bonjour à tous,

En fait je vais vous expliquer.
à l'époque par manque de temp, je n'ai pas voulu laisser le post en attente plusieurs mois et je l'avais validé en solution mais dans les faits je n'arrivais pas à faire fonctionner les différentes solutions proposées :(

Désolé pour cette redondance de post et non je n'ai pas Alzheimer :)

Drav.

Du coup je mets en dessous l'ensemble de code qui fonctionne mais sans la boucle.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim HCoché As Boolean, TV()
If Target.CountLarge = 1 Then
If Not Intersect([H18,J18], Target) Is Nothing Then
HCoché = IsEmpty([J18].Value)
[H18].Value = IIf(HCoché, Empty, ChrW(&H2713))
[J18].Value = IIf(HCoché, ChrW(&H2713), Empty)
ElseIf Not Intersect([B148:C287], Target) Is Nothing Then
TV = Array(Empty, Empty, Empty)
TV(Target.Column - 2) = ChrW(&H2713)
[B:C].Rows(Target.Row).Value = TV
End If
End If

If CStr([C148]) <> "" And Intersect(ActiveCell, [D148]) Is Nothing Then _
If CStr([D148]) = "" Then [D148].Select: MsgBox "Renseignez le problème ex : HS, perdu..."

If CStr([C149]) <> "" And Intersect(ActiveCell, [D149]) Is Nothing Then _
If CStr([D149]) = "" Then [D149].Select: MsgBox "Renseignez le problème ex : HS, perdu..."

If CStr([C150]) <> "" And Intersect(ActiveCell, [D150]) Is Nothing Then _
If CStr([D150]) = "" Then [D150].Select: MsgBox "Renseignez le problème ex : HS, perdu..."

If CStr([C151]) <> "" And Intersect(ActiveCell, [D151]) Is Nothing Then _
If CStr([D151]) = "" Then [D148].Select: MsgBox "Renseignez le problème ex : HS, perdu..."

idem 152
idem153
... jusqu'à 287

Drav
 

Discussions similaires

Réponses
2
Affichages
140
Réponses
8
Affichages
473

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth