Code VBA Instr ne fonctionne pas
Bonjour,
j'ai créé un fichier comportant entre autres 13 feuilles (1 récapitulative appelée "Souffrances", et 12 autres comportant des données de commandes en cours).
La feuille "Souffrances" comporte un code VBA repris ci-dessous permettant de reprendre les données des autres feuilles de commandes et ensuite d'effectuer un tri via un module afin d'obtenir les commandes non complètes. (ce module fonctionne).
Je dois avoir un soucis de code dans ma condition If InStr("Souffrances| Feuil25| Feuil26|", ws.Name & "|") = 0 Then. en effet, je n'arrive pas à reprendre toutes les feuilles que je désire mais simplement quelques unes.
J'avoue être débutant en VBA et ne comprend pas trop bien le fonctionnement de cette ligne de code, donc j'ai du mal à la corriger pour quelle fonctionne.
Pourriez-vous m'aider dans cette commande vba.
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Private Sub Worksheet_Activate()
'Début de la procédure
Dim LastLig As Long, NewLig As Long
'Déclaration des variables de type numérique,Nombre entier de - 2'147'483'648 à 2'147'483'647 (long)
Dim ws As Worksheet
'déclaration variable ws comme feuille de calcul
Application.ScreenUpdating = False
'demande une mise à jour de la feuille suivant conditions ci-dessous
With Worksheets("Souffrances")
'Concerne l'onglet souffrances
LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
'Prendre dernière ligne remplie
If LastLig > 1 Then .Rows(2 & ":" & LastLig).Clear
'efface toutes les lignes remplies jusqu'à la deuxième ligne (garde le titre de l'onglet
NewLig = 2
'Place le début des nouvelles lignes pour copier les données à partir de la ligne 2 (toujours pour garder les titres)
For Each ws In ThisWorkbook.Worksheets
'Prend en considération tout les onglets du fichier (sauf voir condition if instr ci-dessous)
If InStr("Souffrances| Feuil25| Feuil26|", ws.Name & "|") = 0 Then
'Condition permettant de ne pas prendre en compte certains onglets (plaçés entre "" et séparés par |)
LastLig = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
'va chercher la derniere ligne remplie de l'onglet à traiter
ws.Rows("2:" & LastLig).Copy .Range("A" & NewLig)
'Recopie les données à partir de la ligne 2 vers la feuille active afin d'éviter le doublon des titres
NewLig = NewLig + LastLig - 1
'Passe à la ligne suivante ainsi de suite
End If
'fin de la condition de ne pas prendre en compte certains onglets
Next ws
'passage à l'onglet suivant jusqu'à ce tout les onglets soient exécutés
End With
'Fin de l'instruction demandant de travailler sur l'onglet souffrances
Application.Run "'commandes 2018 final.xlsm'!tri"
'exécute la macro de tri pour filter les différents etats (se trouve dans le module 2)
End Sub
'Fin de l'instruction(Sub)VBA |