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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager