Condition dans un code VBA

gerard55

XLDnaute Occasionnel
Bojour à tous
J'ai un code réalisé avec la contribution du forum qui fonctionne très bien. Cependant, ce code qui extrait des données et les classe dans une feuille "effectif" fait sa recherche dans l'ensemble de la base de donnée ("BD"). Je veux pouvoir mettre une condition en amont pour qu'il ne me prenne pas les personnes dont j'aurai renseigné un critère dans une colonne de la base de données. Je ne vois pas très bien ou et comment mettre cette condition.
Merci d'avance pour votre aide.
Gérard

Ci-joint une partie du code. Il y a plusieurs cherche comme celle-ci.

For Each X In Sheets("BD").Range(Sheets("BD").Range("bs2"), Sheets("BD").Range("cg65536").End(xlUp))
With Sheets("effectif")

Select Case X
Case [g61]
.Range("j5").Offset(0, 0) = X.Offset(0, 0)
.Range("j25").End(xlUp).Offset(1, 1) = X.Offset(0, 14)
.Range("j25").End(xlUp).Offset(1, 0) = X.Offset(0, -69) & " " & X.Offset(0, -68)
Case [g62]
.Range("j26").Offset(0, 0) = X.Offset(0, 0)
.Range("j43").End(xlUp).Offset(1, 1) = X.Offset(0, 14)
.Range("j43").End(xlUp).Offset(1, 0) = X.Offset(0, -69) & " " & X.Offset(0, -68)
Case [g63]
.Range("j44").Offset(0, 0) = X.Offset(0, 0)
.Range("j59").End(xlUp).Offset(1, 1) = X.Offset(0, 14)
.Range("j59").End(xlUp).Offset(1, 0) = X.Offset(0, -69) & " " & X.Offset(0, -68)
End Select
End With
Next
 

JCGL

XLDnaute Barbatruc
Re : Condition dans un code VBA

Bonjour à tous,

Tu es certain qu'il ne manque pas un bout :

For Each X In Sheets("BD").Range(Sheets("BD").Range("bs2"), Sheets("BD").Range("cg65536").End(xlUp))

Voir avec :

For Each X In Sheets("BD").Range(Sheets("BD").Range("bs2"), Sheets("BD").Range("cg65536").End(xlUp).Row)

Mais cela ne répond pas à ta demande : je n'ai pas compris la demande. (NONDidiercen'estpasunrestedesCitronsVertsd'hiersoir. Private Joke...)

A+ à tous

Edition : Salut Robert
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Condition dans un code VBA

Bonjour le fil, bonjour le forum,

Non JCGL, la ligne est correcte (quoique bizarre...)
Code:
For Each X In Sheets("BD").Range(Sheets("BD").Range("bs2"), Sheets("BD").Range("cg65536").End(xlUp))
'For Each X in Range(Cellule de début, Cellule de fin)
J'aurais plutôt écrit :
Code:
With Sheets("BD")
     dl = .Cells(Application.Rows.Count, "CG").End(xlUp).Row
     For Each X In .Range("BS2:CG" & dl)
End With
Mais cette ligne est juste...
 

gerard55

XLDnaute Occasionnel
Re : Condition dans un code VBA

Bonjour,
Je suis d'accord avec vous Robert un fichier est le plus simple pour aider à la compréhension. Mais, ce n'est pas évident de réduire ce fichier. Je regarde ce que je peux envoyer qui serait plus explicite
A+
Gérard
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Condition dans un code VBA

Bonjour le fil, bonjour le forujm,

Gérard, plutôt que d'essayer de réduire ton fichier je te recommande de partir d'un fichier vierge, renommer les onglets comme dans ton original, idem pour d'éventuelles plage nommées, copier les contrôles et le code et juste une poignée de données qui participent à la macro. Normalement, ca devrait le faire...
 

gerard55

XLDnaute Occasionnel
Re : Condition dans un code VBA

Bonjour Robert
Merci de t'intéresser à ma demande. Ci-joint un fichier. Je veux que la macro s'exécute normalement mais, je veux créer une deuxième option où les noms dont les critères (SS ou PS ou FA) sont renseigner dans la colonne Q de la feuille BD ne soient pas pris en compte.
Merci d'avance
a+
Gérard
 

Pièces jointes

  • Classeur Essai.xls
    91.5 KB · Affichages: 43
  • Classeur Essai.xls
    91.5 KB · Affichages: 46
  • Classeur Essai.xls
    91.5 KB · Affichages: 48
Dernière édition:

Discussions similaires

Réponses
2
Affichages
138