Recherche d'une valeur de cellule dans le nom des feuilles
Résolu
adamfred
Messages postés
12
Statut
Membre
-
adamfred Messages postés 12 Statut Membre -
adamfred Messages postés 12 Statut Membre -
Bonjour,
Je suis novice en Vba, un long chemin pour acquérir les notions essentielles en Vba.
J'ai un classeur avec plusieurs feuilles. Dans une feuille ici en occurrence la feuille "Recap Fr , j'ai la colonne A ( de la Range("A4:A21")) des noms de ligne qui correspondent souvent aux noms des feuilles de calcul. je souhaiterai extraire le nom des cellules, par exemple TLE D, puis TLE C...6B) le comparer aux noms des feuilles et s'il existe une correspondance, activer cette feuille et mettre des formules dans les cellules B4,C4, D6,E4,F4 et ainsi de suite pour toutes les occurrences trouvées.
Et pour compliquer le tout je reprends la feuille (Recap Angl) et fait la même chose que précédemment.
J'aimerai joindre un fichier mais je n'ai pas su le faire
Merci
Je suis novice en Vba, un long chemin pour acquérir les notions essentielles en Vba.
J'ai un classeur avec plusieurs feuilles. Dans une feuille ici en occurrence la feuille "Recap Fr , j'ai la colonne A ( de la Range("A4:A21")) des noms de ligne qui correspondent souvent aux noms des feuilles de calcul. je souhaiterai extraire le nom des cellules, par exemple TLE D, puis TLE C...6B) le comparer aux noms des feuilles et s'il existe une correspondance, activer cette feuille et mettre des formules dans les cellules B4,C4, D6,E4,F4 et ainsi de suite pour toutes les occurrences trouvées.
Et pour compliquer le tout je reprends la feuille (Recap Angl) et fait la même chose que précédemment.
J'aimerai joindre un fichier mais je n'ai pas su le faire
Merci
A voir également:
- Recherche d'une valeur de cellule dans le nom des feuilles
- Comment faire un livret avec des feuilles a4 - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Bruler des feuilles de laurier - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment faire une recherche à partir d'une photo - Guide
4 réponses
Bonjour,
Voici un exemple de code pour débutant :
Essaies de l'adapter à ton besoin, tu pourras ensuite poursuivre cette discussion en mettant ton fichier sur https://www.cjoint.com/
Tutoriel : Utiliser ci-joint
Voici un exemple de code pour débutant :
Option Explicit Option Private Module Public Sub adamfred() Dim wsh As Worksheet Dim rng As Range Dim cel As Range Dim txt As String 'Analyser chaque cellule de la plage A4:A21 For Each cel In ThisWorkbook.Worksheets("Recap Fr").Range("A4:A21").Cells 'Pour chaque feuille du classeur For Each wsh In ThisWorkbook.Worksheets 'Comparer la valeur de la cellule avec le nom de la feuille If cel.Value = wsh.Name Then 'si ça correspond, mettre en place les formules : '1° formule txt = "=""MaFormuleN°1""" wsh.Range("B4").FormulaLocal = txt '2° formule txt = "=GAUCHE(B4;11) & ""2""" wsh.Range("C4").FormulaLocal = txt 'Etc.. End If Next wsh Next cel End Sub
Essaies de l'adapter à ton besoin, tu pourras ensuite poursuivre cette discussion en mettant ton fichier sur https://www.cjoint.com/
Tutoriel : Utiliser ci-joint
Patrice33740
Messages postés
8930
Statut
Membre
1 780
PS : tu noteras qu'il est inutile d'activer la feuille pour y mettre en place une formule.
je viens de terminer une autre façon de faire sauf qu'il y'a un boucle infini.
Sub ParcoursdesRecap()
Dim myRangeRech, myRangeR As Range
Dim myLastRow, LastRowMp
Dim myLast As Variant
Dim i, j As Integer
Dim mySheet As Worksheets
Dim Nom As String
Dim mySheetRech As Range
Dim CellRech As Range
Dim MtPayé As Double
'DernLigne = Range("A" & Rows.Count).End(xlUp).Row
'DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Worksheets("Recap Fr").Select
myLastRow = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
' nbre de ligne
myLastRow = myLastRow - 1
Set myRangeRech = Range("A4:A" & myLastRow)
For Each Cell In myRangeRech
Worksheets("Recap Fr").Select
For i = 4 To myLastRow
' la recherche des feuilles de calcul commence à la feuille(9)
For j = 9 To Worksheets.Count
Worksheets("Recap Fr").Select
Nom = Range("A" & i).Value
If Nom = Worksheets(j).Name Then
Worksheets(j).Select
Range("D4").Select
If Range("D4") = "" Then
LastRowMp = 0
Else
LastRowMp = Columns("D:D").Find("*", Range("D1"), , , xlByRows, xlPrevious).Row
'somme des colonnes
Worksheets("Recap Fr").Range("B" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("D4:D" & LastRowMp))
Worksheets("Recap Fr").Range("C" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("E4:E" & LastRowMp))
Worksheets("Recap Fr").Range("D" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("F4:F" & LastRowMp))
Worksheets("Recap Fr").Range("F" & i).FormulaR1C1 = LastRowMp - 3
End If
End If
Next j
Next i
Next
End Sub
Certes, il est chaotique mais il semble fonctionner, mais ta solution est plus limpide.
j'y joint le fichier
Merci
Sub ParcoursdesRecap()
Dim myRangeRech, myRangeR As Range
Dim myLastRow, LastRowMp
Dim myLast As Variant
Dim i, j As Integer
Dim mySheet As Worksheets
Dim Nom As String
Dim mySheetRech As Range
Dim CellRech As Range
Dim MtPayé As Double
'DernLigne = Range("A" & Rows.Count).End(xlUp).Row
'DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Worksheets("Recap Fr").Select
myLastRow = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
' nbre de ligne
myLastRow = myLastRow - 1
Set myRangeRech = Range("A4:A" & myLastRow)
For Each Cell In myRangeRech
Worksheets("Recap Fr").Select
For i = 4 To myLastRow
' la recherche des feuilles de calcul commence à la feuille(9)
For j = 9 To Worksheets.Count
Worksheets("Recap Fr").Select
Nom = Range("A" & i).Value
If Nom = Worksheets(j).Name Then
Worksheets(j).Select
Range("D4").Select
If Range("D4") = "" Then
LastRowMp = 0
Else
LastRowMp = Columns("D:D").Find("*", Range("D1"), , , xlByRows, xlPrevious).Row
'somme des colonnes
Worksheets("Recap Fr").Range("B" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("D4:D" & LastRowMp))
Worksheets("Recap Fr").Range("C" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("E4:E" & LastRowMp))
Worksheets("Recap Fr").Range("D" & i).FormulaR1C1 = Application.WorksheetFunction.Sum(Range("F4:F" & LastRowMp))
Worksheets("Recap Fr").Range("F" & i).FormulaR1C1 = LastRowMp - 3
End If
End If
Next j
Next i
Next
End Sub
Certes, il est chaotique mais il semble fonctionner, mais ta solution est plus limpide.
j'y joint le fichier
Merci