VBA - Modifier seulementc certaines feuilles et selectionner celles ci

bibou20

XLDnaute Nouveau
Bonjou à tous,

Je vais essayer de vous expliquer mon contexte de travail,

Je dois charger des scénarios dans un outil afin de pouvoir faire des tests , je dois donc les formater

J'ai un premier fichier avec un premier onglet avec la liste des scénarios:

Ce que j'essaie de faire c 'est de modifier les titres des feuilles afin d avoir chaque scénario pour qu il soit tester pour chaque pays

Voici ce que j 'ai essayé de faire

Sub update_title()
Dim j As Integer
Dim nomfeuille As String
For j = 4 To 100
On Error GoTo suite
nomfeuille = Sheets("Scenarios list").Range("A" & j)
Sheets(nomfeuille).Range("B1") = Sheets("Scenarios list").Range("D" & j) & "-" & "X" & Left(Sheets("Scenarios list").Range("A" & j), 2) & Right(Sheets("Scenarios list").Range("A" & j), 6)
Sheets(nomfeuille).Range("B2") = Sheets("Scenarios list").Range("B" & j)
Sheets(nomfeuille).Range("B3") = Sheets("Scenarios list").Range("C" & j)

suite:


' Dim Message As String
'MsgBox ("Il y a " & Worksheets.Count & "feuilles modifiées")

Sheets(nomfeuille).Range("B1").Contains = "RO" ==> Ce que je souhaiterais faire c'est tout d abord de modifier seulement les feuilles ou j 'ai mis quelque chose dans la colonne D feuilles Scénarios List et je souhaiterais donc les sélectionner aussi par la suite,
Sheets(Compter).Select


Next j


End Sub

Je pense qu'il faut utiliser un pointeur, mais je nesais pas trop comment faire

J'espère avoir été claire,

Merci par avance pour votre aide,
 

Pièces jointes

  • Scenarios List TESTS.xlsx
    82.1 KB · Affichages: 67
Dernière édition:

Jack2

XLDnaute Occasionnel
Re : VBA - Modifier seulementc certaines feuilles et selectionner celles ci

Bonsoir bibou20,

Je ne suis pas sûr d'avoir compris vraiment ce que tu souhaitais faire, mais tu trouveras, je l'espère, dans le fichier joint de quoi relancer ton post. La procédure Update_Title n'est qu'une mise en forme pour actualiser les cellule B1 à B3.

Pour le reste, il n'est pas possible de sélectionner une feuille et y apporter aisément des modifications dans une boucle de 96 feuilles. Par contre, on peut trouver un moyen de repérer facilement les feuilles correspondant à ta demande (colonne D). On peut :

- colorier les onglets correspondants, ou changer les caractéristiques des cellules D non vides (cf. ]Selection_Colonne_D
- mettre les onglets correspondant dans un tableau et/ou lister ces onglets dans une autre feuille
- faire un double clic sur les cellules non vides (cf. Sub Worksheet_BeforeDoubleClick. Pour voir la procédure : clic droit sur l'onglet puis visualiser le code).

PS Je ne connais pas l'instruction .Contains (rien dans l'aide VBA). Mais il existe plusieurs équivalents comme Range.Value Like "Mot à chercher" (https://www.excel-downloads.com/threads/recherche-dune-fonction-vba.15168/)

Voila quelques pistes.

A+ Jack2
 

Pièces jointes

  • bibou20.xls
    181 KB · Affichages: 80

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA - Modifier seulementc certaines feuilles et selectionner celles ci

Bonjour le fil, bonjour le forum,

Peut-être comme ça :

Code:
Sub update_title()
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim j As Integer 'déclare la variable j (incrément)
Dim nomfeuille As String 'déclare la variable nomfeuille
Dim i As Integer 'déclare la variable i (Incrément)
Dim fs() As Variant 'déclare la variable fs (tableau des Feuilles à Sélectionner)

Set o = Sheets("Scenarios list") 'définit l'onglet o
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row ' définit la dernière ligne éditéee dl de la colonne 1 (=A) de l'onglet o
For j = 6 To dl ' boucle des lignes 6 à dl
    nomfeuille = o.Range("A" & j) 'définit la variable nomfeuille
    Sheets(nomfeuille).Range("B1") = o.Range("D" & j) & "-" & "X" & Left(o.Range("A" & j), 2) & Right(o.Range("A" & j), 6)
    Sheets(nomfeuille).Range("B2") = o.Range("B" & j)
    Sheets(nomfeuille).Range("B3") = o.Range("C" & j)
    If o.Cells(j, 4).Value <> "" Then 'condition : si la cellule en colonne D n' est pas vide
        ReDim Preserve fs(i) 'redimensionne le tableau fs
        fs(i) = nomfeuille 'attribue la valeur de la variable nomfeuille à la variable indexéee fs(i)
        i = i + 1 'incrémente i
    End If 'fin de la condition
Next j 'prochaine ligne de la boucle
Sheets(fs).Select 'sélectionne les onglets du tableau fs
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin