Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion vincent
  • Date de début Date de début

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 !

V

vincent

Guest
Bonjour,
voila j aimerai savoir le code pour dire ca en language vba :
si la celllue 'e3' = no + nom de la feuille alors selectionner la feuille
pour l instant j en suis la et ca ne marrche pas
If Sheet.Range('E3') = 'NO ' & Sheet.Name Is Nothing Then
Sheets(Sheet.Name).Activate

car je ne sais pas pourquoi au debut ca marchait tres bien avec une recherche du style sheet.cell.find('no' & sheet.name) mais maintenant au lieu de lire le resultat dans la celulle, vba li la formule et la of course rien ne s imprime car dans les cellules e1 j ai une formule avec si donc j ai ma requete NO + nom de la feuille si mon si n'est pas respecte.
Aussi ce que je ne comprend pas c est que je fais cette meme requete sur une autre feuille et la vba lis le resultat
je vous montre
Dim jobcard As Object
Set jobcard = Sheets(Array(1, 2, 3, 4, 5))

For Each Sheet In jobcard
If Sheet.cells.find('NO ' & Sheet.Name) Is Nothing Then 'la ca lis_ la formule.
If Sheets('PRESENTATION').Cells.Find('CAR 2#') Is Nothing_ Then 'la ca lis le resultat
Sheets(Sheet.Name).PrintOut copies:=1
Else
Sheets(Sheet.Name).PrintOut copies:=2
End If
End If
Next
End Sub

merci de m aider car comme on dit un regard exterieur nous fait svt voire des choses que l on ne voit pas tout seul
 
bonjour vincent, le forum,

je présume que le debut de ton code est le même que pour imprimer ?

sinon c'est normal que cela ne marche pas

moi je suis plus adepte des boucles for i que Each (mais c'est un defaut de ma par 😱 )

je serait plus sur

Code:
for i = 1 to Sheets.Count
if sheets(i).range('E3') = 'NO' & Sheet(i).Name then
sheets(i).activate

pour autant je pense que si tu as plusieurs feuille qui ramplisse cette condition il ne t'affichera que la derniere car dans sa boucle il affichera la feuille 1 puis 2 (mais trop vite pour que tu puisses le voir)

je debute alors si quelqu'un peut trouver une autre solition

courrage
Thomas®
 
merci a toi thomas de me repondre si vite,
c'est bon je viens de trouver un compromis a mon probleme a savoir
If Sheet.Range('E1') = ('NO ' & Sheet.Name) Then
else
et ce ke je desire et ca marche alors...
sinon ton i = 1 to sheets.count ke cela signifie t il?
surtout le sheets.count car le reste j ai bien compris je pense
est ce cela est un code qui te permet de compter ton nombre de feuille ou simplement cea signifie jusqu a la derniere feuille?
je suis novice aussi et j aime apprendre alors voila
 
Bonjour Thomas, Vincent le Forum

Ta première macro, Vincent, n'est pas très 'Orthodoxe', mais du coup j'ai même du mal à comprendre ce qu'elle est sensée faire...

Voici traduit en VBA, ce que j'ai compris :




Sinon pour Thomas, les deux Type de boucles, dans le cas de faire une colection sur WorkSheets, sont casiment similaires, mis à part que l'on travaille directement sur un Object Worksheet, ce qui est plus facile pour des manipulations ultérieures dans la Boucle, exemple simple :



pour Vincent, le Sheets.Count est tout simple :

Sub ClasseurCompteWorkSheets()

MsgBox 'Le Classeur actif contient ' & Worksheets.Count & ' WorkSheets'

End Sub


Par contre une collection Sheets peut contenir des objets Chart ou Worksheet.

Sub ClasseurCompteObjetsChartOuSheets()

MsgBox 'Le Classeur actif contient ' & Sheets.Count & ' Objets'

End Sub

Bon Week End
@+Thierry
 
re,

enfait count donne le nombre total

donc une boucle sur toutes les feuilles.


je te disais que c'est moins bien que each car each travail sur des objet dans ton cas les feuilles (pour chaque feuille de mon fichier)

in worksheets (ce qui évite de declarer des variable tel que tu le fais 'Set jobcard = Sheets(Array(1, 2, 3, 4, 5))'

ta facon est util si tu souhaite éviter des feuilles (1, 4, 5, 6, ))

essai ce code qui est je pense plus proche de ta facon de faire




Code:
Dim wd As Worksheet

For Each wd In Worksheets

If wd.Range('E1') = ('NO ' & wd.Name) Then

Next

sinon dans for i (tu peux boucler sur tout et pas que des objets donc plus souple mais plus lent car il crée un objet à chaque foi que i change donc si 5 feuilles je cré 5 objet alors que each exploite des objets existant (dans ton cas pas de diff mais si grosse boucle la dif est significative).

@+
Thomas®
 
re Bonjour Thomas,

Il n'y a pas de mal, puisque tu vas dans mon sens, et tu t'expliques très bien aussi.

Pour le cas d'exclusion, on peut aussi en restand sur une Collection WorkSheets se permettre ceci :



Ou encore celà :


Enfin il y de quoi s'amuser 😉

Bon Samedi sur VBA lol
@+Thierry
 
merci a tous les deux,
thomas : le truc c est que oui j evite des feuilles donc en faite le each est obligatoire
thierry :
tu me dis ke ce ne st pas orthodoxe alors si ca marche de temps a autre c est qu excel aurait une intelligence artificielle...

j ai optimise ma macro et je suis fier de moi ca marche sans probleme comme koi...

sub toto()
Dim jobcard As Object
Set jobcard = Sheets(Array(3, 4, 5, 6, 7, 8))

For Each Sheet In jobcard
If Sheet.Range('E1') = ('NO ' & Sheet.Name) Then
Else
If Sheets('PRESENTATION').range('B9') = '' Then
Sheets(Sheet.Name).PrintOut copies:=1
Else
Sheets(Sheet.Name).PrintOut copies:=2
End If
End If
Next
End Sub

Je vous repose ma question, avait vous une explication rationnelle pour qu excel prenne en compte soit la formule soit le resultat dans une cellule et cela par la meme instruction a savoir sheets.cells.find( 'ce ke tu cherche') mis a part ke c est une tete de mule ki fait ce ki lui plait.
merci
 
Re Bonjour Vincent

Je ne voulais pas t'offenser avec les Orthodoxes ou les Catholiques !!! Je suis comme ça depuis plus de trois ans sur ce Forum, je ne peux m'empêcher d'essayer d'obtenir toujours 'le plus' de tous les intervenants, de les faire s'épanouir en VBA... Et je pense que pas mal peuvent confirmer que je ne leur ai pas 'cassé les pieds' pour rien.


Sinon ce que je peux te dire, c'est que tout comme les outils de TRI ou donc, pour le cas présent, de RECHERCHE, certains paramètres d'Excel restent en mémoire quand tu ne les précises pas dans ton Code...

Par exemple ici, pour le Find, si tu vas manuellement dans les Menus d'Excel :
   => Edition
      => Rechercher
         => Que tu 'bascules' l'Option 'Dans' sur 'Valeur' au lieu de 'Formules' ou encore 'Commentaires'

Tu n'auras pas du tout le même effet en exécutant ta Macro....

Alors que si, comme je t'ai conseillé tu précise :
.Find(TexteCible, LookIn:=xlValues)

Quelque soit dans 'l'état' où tu auras laissé les paramètres de la Boite de Dilaog pour l'Outil de Recherche.... Ce n'est pas de l'intelligence artificielle, c'est juste des années d'expérience sur le fonctionnement d'Excel.

Bonne Après Midi
@+Thierry
 
Salut Vincent
Bonjour @+Thierry
Bonjour Thomas®
Vincent il faut savoir resté zen ,car lorsque l'on se lance dans ce genre
de procédure et que l'on est pas au top
il faut te dire qu'Ici sur le Forum @+Thierry est une Référence
et qu'il ne loupe jamais une Occasion de te faire avancer en même temps que ton Projet
tu pourrais le constater en faisant une recherche par nom et là tu verrais que @+Thierry sait de quoi il parle
je suis un fervent admirateur et consommateur de tout ce que @+Thierry et quelques autres D'ailleurs, peuvent produirent sur ce Forum.
J’apprécie comme beaucoup les remarques et commentaires qu’il peut faire afin de nous faire avancer (Epanouir comme il dit) et quelques soient ces remarques qui peuvent avoir trait, à l’utilisation appropriée ou pas d’une procédure ,la présentation du texte d’une macro,l’optimisation d’un code qui pourtant fonctionne très bien ,mais dont on a pas tiré le meilleur des tas de petites choses qui font que j’avance et j’apprends et que de plus en plus souvent, je me lance à aider (comme j’ai pu le faire pour toi)des personnes en quête de la réponse, qui résoudra leur problème.
donc j’interviens là plus, pour marquer une fois encore, mon intérêt pour ce que @+Thierry fait pour nous, passionnés que nous sommes ,Que pour te dire que ta façon de faire n’est pas très Sympa, mais bon tu le constateras très vite @+Thierry est un très bon pédagogue et tu pourras compter sur lui à chaque fois qu’il seras parmi nous bien sûr .
bon Week-end à toutes et à tous
PS
Thierry me disait il y a peu Lol

Message édité par: ChTi160, à: 11/06/2005 15:54
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
332
Réponses
4
Affichages
671
Réponses
7
Affichages
286
Réponses
5
Affichages
591
Réponses
7
Affichages
703
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…