Aide sur macro

  • Initiateur de la discussion vincent
  • Date de début
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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour vincent, le forum

Voici un code qui devrait convenir avec un test par fonction d'existence de feuille dans le classeur actif
Code:
Function Test_Feuille(Nom As String) As Boolean
On Error Resume Next
If ActiveWorkbook.Sheets(Nom) Is Nothing Then Else Test_Feuille = True
End Function
Sub Test_Feuille_Proc()
Dim Nom_Feuil As String
Nom_Feuil = Right(ActiveSheet.Range('E3').Value, Len(ActiveSheet.Range('E3').Value) - 3)
If Test_Feuille(Nom_Feuil) Then
Sheets(Nom_Feuil).Select
End If
End Sub

Cordialement, A+
 
V

vincent

Guest
bonjour a toi yeahou,
merci de me faire partager ton savoir mais la c est un peu trop pour moi
je voulais te dire j ai ete choque hier par le nombre d encouragement que tu as pu ressevoir pour rester au sein du forum
j ai trouver ca super sympa
t as pleurer?
en tout cas merci pour ta macro mais franchement elle est trop complique pour moi rien que la premiere ligne je ne la comprend pas ..as boolean
d abord j aimerai comprendre le language vba et ensuite je ferai tres truc de fou a ton image...
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re Bonjour

Pour les encouragements, j'ai également été agréablement surpris. Beaucoup venaient de ténors du forum dont j'aprécie énormément la prose. Cela a sans aucun doute contribué à me faire passer ma mauvaise humeur et je ne vais pas en remettre une couche.
Pour le code, cela n'a rien de compliqué:
La fonction est dédiée au test de l'existence d'une feuille dans le classeur actif, elle répond true quand la feuille existe et false quand elle n'existe pas. Elle est transposable et utilisable telle quelle (c'est une variation que j'ai codée d'aprés un exemple de Ti sur l'existence de classeurs, j'avais aprécié sa facilité d'emploi).
Pour l'utiliser, il suffit de l'appeler en passant comme argument le nom à tester.
Code:
Function Test_Feuille(Nom As String) As Boolean
On Error Resume Next
If ActiveWorkbook.Sheets(Nom) Is Nothing Then Else Test_Feuille = True
End Function
La procédure, elle, s'occupe de la sélection de la feuille:
Code:
Sub Test_Feuille_Proc() 'nom de la procédure
Dim Nom_Feuil As String 'déclaration d'une variable nom_feuil en chaine de caractère qui sera disponible au sein de la procédure
'il est plus facile de répéter Nom_Feuil que Right(ActiveSheet.Range('E3').Value, Len(ActiveSheet.Range('E3').Value) - 3)
'et comme cela on ne l'extrait qu'une seule fois
Nom_Feuil = Right(ActiveSheet.Range('E3').Value, Len(ActiveSheet.Range('E3').Value) - 3)
'la commande ci dessus extrait les caractères à droite de la chaine définis par la longueur de la chaine -3 ce qui permet d'enlever le 'NO '
'activesheet correspond à la feuille active
If Test_Feuille(Nom_Feuil) Then 'test de l'existence de la feuille et exécution, si elle existe
' des instructions contenues entre if then et end if
Sheets(Nom_Feuil).Select 'sélection de la deuille si elle existe
End If
End Sub
En espérant que c'est maintenant plus compréhensible

Cordialement, A+

Ps: j'ai tendance à peu documenter mon code en première écriture, c'est un défaut que j'essaye de corriger. Il ne faut pas hésiter à demander des explications, je ne rechigne jamais à les faire.

Message édité par: yeahou, à: 11/06/2005 14:07
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Yeahou, Vincent

Tout d'abord je tiens à te signifier ma satisfaction, suite à ton Post 'Tchao', de savoir que quelqu'un d'interressant autant par sa passion et son dévouement ainsi que sur ton coté technique (où tu m'as 'scotché' plus d'une fois) ne quitte plus le Forum.

Sinon vu que je viens de répondre en long en large et en travers sur un sujet exactement identique Lien supprimé je me suis dit, mais je n'avais pas vu mon copain Yeahou dans ce Fil pourtant....


Grrrrrrrrrrrrrr Vincent nous a fait un beau doublon !!!!

Enfin donc maintenant il a on ne peut plus d'explication !!!

Bien à vous, bien à Toi
Et bon Week End
@+Thierry
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
juste le lien avec l'autre fil sur le même sujet
Lien supprimé

en même temps sur ce coup la, thierry!
un beau doublon en effet.
:lol:
Merci à toi pour ta gentillesse et tes encouragements, bon week end!

Message édité par: yeahou, à: 11/06/2005 14:31
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 602
Membres
104 224
dernier inscrit
Brilma