Je sais que c'est facile mais je trouve pas!!

  • Initiateur de la discussion Initiateur de la discussion bertrand19
  • 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 !

B

bertrand19

Guest
Bonjour le forum

je suis sur une compilation de documents! Et comme beaucoup de compilation de documents, les personnes n'ont pas rempli les docs de la même manière.
Je retrouve donc avec deux cas de figure pour la feuille qui m'interesse
- ou bien elle s'appelle "sauvegarde"
- ou bien elle se trouve en première position / sheets(1).



Je souhaiterais faire une condition simple avec "If... then... else... end if"

if sheets("sauvegarde")=true
then
'mon code

else
Sheets(1).Select
'mon code


end if

mais je n'arrive pas à trouver la bonne forme pour ma condition du "IF"
sheets("sauvegarde") = true ne fonctionne pas


Merci par avance pour votre aide
 
Re : Je sais que c'est facile mais je trouve pas!!

Bonjour,

Tu peux essayer ceci :

Sub Test()
MaVar = ""
For Each X In Sheets
If X.Name = "sauvegarde" Then MaVar = X.Index
Next
If MaVar <> "" Then Sheets(MaVar).Select Else Sheets(1).Select
End Sub


Mais , la feuille sauvegarde n'est pas en position 1 ?
 
Re : Je sais que c'est facile mais je trouve pas!!

Merci Catrice

la feuille sauvegarde ne se trouve jamais en position 1
En revanche, si je comprends a peu près ton code, ou dois je introduire dans ton code mes manip sur les onglets

Sub Test()
MaVar = ""
For Each X In Sheets
If X.Name = "sauvegarde" Then MaVar = X.Index
Next
If MaVar <> "" Then Sheets(MaVar).Select Else Sheets(1).Select
End Sub


merci d'avance
 
Re : Je sais que c'est facile mais je trouve pas!!

Re,

Sans le reste du code, je ne peux pas te dire exactement où positionner ce code ... mais globalement il faut qu'il soit juste avant le traitement que tu souhaites faire sur la sheets(1) ou "sauvegarde".

Ce code boucle sur les feuille du classeur actif, verifie s'il y a une feuille nommée "sauvegarde" si oui, il la selectionne si non il selectionne sheets(1)


NB. le "sheets("sauvegarde") = true" du début ne fontionne pas car sheets("sauvegarde") renvoie un objet WorkSheet.
En revanche : sheets("sauvegarde").name = "sauvegarde" peut renvoyer True ou False
 
Dernière édition:
Re : Je sais que c'est facile mais je trouve pas!!

je pensais justement la meme chose à propos du code...
C'est peut etre plus parlant si je te le montre

Sub compilation2()
'
Dim Chemin As String, i As Long

Chemin = "D:\compilation\oct 08"
Set FS = Application.FileSearch
With FS
.LookIn = Chemin
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
' ton code ici ......

Sheets(1).Select
Range("I6000").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(0, -8).Select
Application.GoTo Reference:="RC:R13C18"
Selection.Copy

Windows("macro compilationhouse.xls").Activate
Sheets("feuil1").Select
Range("I6000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -8).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Workbooks(2).Activate

ActiveSheet.Range("A1").Copy

ActiveWindow.Close

Next
End If
End With

End Sub


Si j'essaie d'y intégrer tes formules, j'obtiens ce code

Sub compilation3()


Dim Chemin As String, i As Long

Chemin = "D:\compilation\oct 08"
Set FS = Application.FileSearch
With FS
.LookIn = Chemin
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
' ton code ici ......


MaVar = ""
For Each X In Sheets
If X.Name = "sauvegarde" Then MaVar = X.Index

Sheets("sauvegarde").Select
Range("I6000").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(0, -8).Select
Application.GoTo Reference:="RC:R13C18"
Selection.Copy

Windows("macro compilationhouse.xls").Activate
Sheets("feuil1").Select
Range("I6000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -8).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Workbooks(2).Activate

ActiveSheet.Range("A1").Copy

ActiveWindow.Close


Next
If MaVar <> "" Then Sheets(MaVar).Select Else Sheets(1).Select


Sheets(1).Select
Range("I6000").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(0, -8).Select
Application.GoTo Reference:="RC:R13C18"
Selection.Copy

Windows("macro compilationhouse.xls").Activate
Sheets("feuil1").Select
Range("I6000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -8).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Workbooks(2).Activate

ActiveSheet.Range("A1").Copy

ActiveWindow.Close

Next
End If
End With

End Sub


Mais il ne marche pas.....
je dois mal m'y prendre avec ton code!!!!!
Est ce que tu vois mon erreur?????

Merci
 
Re : Je sais que c'est facile mais je trouve pas!!

Re,

Il ne faut pas découper mon code.
Il doit resté groupé

Ca doit donner qq chose comme :

For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))

MaVar = ""
For Each X In Sheets
If X.Name = "sauvegarde" Then MaVar = X.Index
Next
If MaVar <> "" Then Sheets(MaVar).Select Else Sheets(1).Select

'Sheets("sauvegarde").Select 'A supprimer
Range("I6000").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(0, -8).Select
 
Dernière édition:
Re : Je sais que c'est facile mais je trouve pas!!

Merci pour l'explication

j'ai compris mon erreur en fin de matiné et maintenant ma macro est opérationnelle.

la question est RESOLUE

Mon code est le suivant maintenant:

Dim Chemin As String, i As Long

Chemin = "D:\compilation"
Set FS = Application.FileSearch
With FS
.LookIn = Chemin
.Filename = "*.xls"
.SearchSubFolders = True
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Workbooks.Open (.FoundFiles(i))
' ton code ici ......


MaVar = ""
For Each X In Sheets
If X.Name = "Sauvegarde" Then MaVar = X.Index

Next
If MaVar <> "" Then Sheets(MaVar).Select Else Sheets(1).Select



Range("I60000").Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
ActiveCell.Offset(0, -8).Select
Application.GoTo Reference:="RC:R13C18"
Selection.Copy

Windows("macrocompilation.xls").Activate
Sheets("conso").Select
Range("I60000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, -8).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False



Workbooks(2).Activate



ActiveSheet.Range("A1").Copy

ActiveWindow.Close

Next
End If
End With

End Sub


Merci à catrice et au forum pour votre aide
 
- 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
9
Affichages
509
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour