Problème de nom de feuille [VBA]
Résolu
mimi_1990
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
mimi_1990 Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
mimi_1990 Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Bonjour, (Le code parait long mais j'ai tout copié lisez l'intro s'il vous plait !)
J'ai créé ce programme qui compile les résultats de la comparaison de deux feuilles dans laquelle j'ai au préalable importer des fichiers !
Mon souci est que mon utilisateur lance une comparaison et comme vous pouvez le voir a la fin du code la Feuil3 est renommée en Synthèse...
Mon utilisateur est censé faire des modifications et relancer la comparaison ensuite...
Seulement une fois que la feuil3 a été renommée en synthèse il m'est impossible de l'appeler a nouveau ...
J'aimerai savoir comment faire pour renommer ma feuille comme il faut car si je renomme Synthèse en feuil3 en début de code il me dit la premiere fois qu'il ne trouve pas synthèse... Logique !
J'aimerai également savoir comment mettre dans mon programme comparesheets au tout début une msgbox au cas ou les feuilles Réel et Théorique nexisterait pas, disant:
" veuillez au préalable importez un fichier Réel et un fichier Théorique !"
Davance merci pour vos réponses !
J'ai créé ce programme qui compile les résultats de la comparaison de deux feuilles dans laquelle j'ai au préalable importer des fichiers !
Mon souci est que mon utilisateur lance une comparaison et comme vous pouvez le voir a la fin du code la Feuil3 est renommée en Synthèse...
Mon utilisateur est censé faire des modifications et relancer la comparaison ensuite...
Seulement une fois que la feuil3 a été renommée en synthèse il m'est impossible de l'appeler a nouveau ...
J'aimerai savoir comment faire pour renommer ma feuille comme il faut car si je renomme Synthèse en feuil3 en début de code il me dit la premiere fois qu'il ne trouve pas synthèse... Logique !
Private Sub CompareSheets() 'compare sheets Reel/Theorique Dim cherche As Range Dim valeur As String Dim i, derlig, An, numlig As Integer Dim CodeAetG As Double Dim Ptrim As Currency Sheets("Feuil3").Range("B2:B7").Value = "" With Sheets("Réel") derlig = .Cells(65536, 1).End(xlUp).row End With For i = 1 To derlig With Sheets("Réel") valeur = .Cells(i, 1).Value End With With Sheets("Théorique").Columns(1) Set cherche = .Cells.Find(valeur) If cherche Is Nothing Then 'MsgBox "Feuille Réel: Le contrat " & valeur & " (ligne" & " " & i & ")" & " n'a pas été trouvé" Sheets("Feuil3").Select Range("B2").Select ActiveCell.Value = ActiveCell.Value & vbLf & valeur & " (ligne " & i & ")" Else 'Compare ClientID, Trim Price, Bank informations Sheets("Réel").Select numlig = cherche.row CodeAetG = Sheets("Réel").Cells(i, 18).Value * 10 ^ 5 + Sheets("Réel").Cells(i, 19).Value Ptrim = Sheets("Réel").Cells(i, 26).Value / 100 If Sheets("Réel").Cells(i, 2).Value <> Val(Sheets("Théorique").Cells(numlig, 2).Value) Then 'MsgBox "Feuille Réel: Le code Client" & " (ligne" & " " & i & ")" & " est différent" Sheets("Feuil3").Select Range("B3").Select ActiveCell.Value = ActiveCell.Value & vbLf & Sheets("Réel").Cells(i, 2).Value & " (ligne " & i & ")" If Ptrim <> Val(Sheets("Théorique").Cells(numlig, 13).Value) Then 'MsgBox "Feuille Réel: Le Prix Trimestriel T.T.C." & " (ligne" & " " & i & ")" & " est différent" Sheets("Feuil3").Select Range("B6").Select ActiveCell.Value = ActiveCell.Value & vbLf & Ptrim & " (ligne " & i & ")" If CodeAetG <> Val(Sheets("Théorique").Cells(numlig, 3).Value) Then 'MsgBox "Feuille Réel: Le Code Agence/Guichet" & " (ligne" & " " & i & ")" & " est différent" Sheets("Feuil3").Select Range("B4").Select ActiveCell.Value = ActiveCell.Value & vbLf & CodeAetG & " (ligne " & i & ")" If Sheets("Réel").Cells(i, 20).Value <> Val(Sheets("Théorique").Cells(numlig, 4).Value) Then 'MsgBox "Feuille Réel: Le Numéro de compte" & " (ligne" & " " & i & ")" & " est différent" Sheets("Feuil3").Select Range("B5").Select ActiveCell.Value = ActiveCell.Value & vbLf & Sheets("Réel").Cells(i, 20).Value & " (ligne " & i & ")" End If End If End If End If End If End With Sheets("Feuil3").Select Range("B7").Select ActiveCell.Value = Application.Sum(Sheets("Réel").Range("H1").EntireColumn) Next i 'compare sheets Theorique/Reel Dim search As Range Dim valeur2 As Variant Dim j, derlig2, numlig2 As Integer With Sheets("Théorique") derlig2 = .Cells(65536, 1).End(xlUp).row End With Sheets("Feuil3").Range("C2:C7").Value = "" For j = 2 To derlig2 With Sheets("Théorique") valeur2 = .Cells(j, 1).Value End With With Sheets("Réel").Columns(1) Set search = .Cells.Find(valeur2) If search Is Nothing Then 'MsgBox "Feuille Théorique: Le contrat" & valeur2 & " (ligne" & " " & j & ")" & " n'a pas été trouvé" Sheets("Feuil3").Select Range("C2").Select ActiveCell.Value = ActiveCell.Value & vbLf & valeur2 & " (ligne " & j & ")" Else 'Compare ClientID, Trim Price, Bank informations Sheets("Théorique").Select numlig2 = search.row CodeAetG = Sheets("Réel").Cells(i, 18).Value * 10 ^ 5 + Sheets("Réel").Cells(i, 19).Value Ptrim = Sheets("Réel").Cells(i, 26).Value / 100 If Val(Sheets("Théorique").Cells(j, 2).Value) <> Sheets("Réel").Cells(numlig2, 2).Value Then 'MsgBox "Feuille Théorique: Le code Client" & " (ligne" & " " & j & ")" & " est différent" Sheets("Feuil3").Select Range("C3").Select ActiveCell.Value = ActiveCell.Value & vbLf & Val(Sheets("Théorique").Cells(j, 2).Value) & " (ligne " & j & ")" If Val(Sheets("Théorique").Cells(j, 13).Value) <> Ptrim Then 'MsgBox "Feuille Théorique: Le Prix Trimestriel T.T.C." & " (ligne" & " " & j & ")" & " est différent" Sheets("Feuil3").Select Range("C6").Select ActiveCell.Value = ActiveCell.Value & vbLf & Val(Sheets("Théorique").Cells(j, 13).Value) & " (ligne " & j & ")" If Val(Sheets("Théorique").Cells(j, 3).Value) <> CodeAetG Then 'MsgBox "Feuille Théorique: Le Code Agence/Guichet" & " (ligne" & " " & j & ")" & " est différent" Sheets("Feuil3").Select Range("C4").Select ActiveCell.Value = ActiveCell.Value & vbLf & Val(Sheets("Théorique").Cells(j, 3).Value) & " (ligne " & j & ")" If Val(Sheets("Théorique").Cells(j, 4).Value) <> Sheets("Réel").Cells(numlig2, 20).Value Then 'MsgBox "Feuille Théorique: Le Numéro de compte" & " (ligne" & " " & j & ")" & " est différent" Sheets("Feuil3").Select Range("C5").Select ActiveCell.Value = ActiveCell.Value & vbLf & Val(Sheets("Théorique").Cells(j, 4).Value) & " (ligne " & j & ")" End If End If End If End If End If End With Sheets("Feuil3").Select Range("C7").Select ActiveCell.Value = Application.Sum(Sheets("Théorique").Range("M1").EntireColumn) Next j Sheets("Feuil3").Select Range("B1").Select ActiveCell.FormulaR1C1 = "Réel" Range("C1").Select ActiveCell.FormulaR1C1 = "Théorique" Range("A2").Select ActiveCell.FormulaR1C1 = "Contrats non trouvé (Valeur + Ligne)" Range("A3").Select ActiveCell.FormulaR1C1 = "Codes Clients Différents (Valeur + Ligne)" Range("A4").Select ActiveCell.FormulaR1C1 = "Code Agence/Guichet différent (Valeur + Ligne)" Range("A5").Select ActiveCell.FormulaR1C1 = "Numéro de compte différent (Valeur + Ligne)" Range("A6").Select ActiveCell.FormulaR1C1 = "prix trimestriel différent (Valeur + Vigne)" Range("A7").Select ActiveCell.FormulaR1C1 = "Somme des prélèvements" Range("B1:C1").Select With selection.Interior .ColorIndex = 48 .Pattern = xlSolid End With Range("A2:A7").Select With selection.Interior .ColorIndex = 48 .Pattern = xlSolid End With Range("A2:C7,B1:C1").Select selection.Borders(xlDiagonalDown).LineStyle = xlNone selection.Borders(xlDiagonalUp).LineStyle = xlNone With selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Rows("1:8").EntireRow.AutoFit Columns("A:C").EntireColumn.AutoFit Sheets("Feuil3").Name = "Synthèse" End Sub
J'aimerai également savoir comment mettre dans mon programme comparesheets au tout début une msgbox au cas ou les feuilles Réel et Théorique nexisterait pas, disant:
" veuillez au préalable importez un fichier Réel et un fichier Théorique !"
Davance merci pour vos réponses !
A voir également:
- Problème de nom de feuille [VBA]
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Nom de compte steam exemple - Forum Jeux vidéo
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
- Nom de l'adresse ✓ - Forum Loisirs / Divertissements
2 réponses
Bonjour,
1ère question : Quelque soit son nom, Feuil3 ou synthese ou peu importe, les feuilles excel sont également répertoriées sous VBA par leur numéro. regarde les noms qui apparaissent en haut à gauche dans la fenêtre Visual Basic :
Feuil1(Feuil1)
Feuil2(Feuil2)
Feuil3(Feuil3)
Après avoir renommé ta feuille3 tu as :
Feuil1(Feuil1)
Feuil2(Feuil2)
Feuil3(synthèse)
Suffit donc de toujours appeler ta 3ème feuille par son numéro soit :
Sheets(3)
au lieu de Sheets("Feuil3") ou Sheets("synthese")
2ème question : Un test en début de macro, un peu comme ceci :
1ère question : Quelque soit son nom, Feuil3 ou synthese ou peu importe, les feuilles excel sont également répertoriées sous VBA par leur numéro. regarde les noms qui apparaissent en haut à gauche dans la fenêtre Visual Basic :
Feuil1(Feuil1)
Feuil2(Feuil2)
Feuil3(Feuil3)
Après avoir renommé ta feuille3 tu as :
Feuil1(Feuil1)
Feuil2(Feuil2)
Feuil3(synthèse)
Suffit donc de toujours appeler ta 3ème feuille par son numéro soit :
Sheets(3)
au lieu de Sheets("Feuil3") ou Sheets("synthese")
2ème question : Un test en début de macro, un peu comme ceci :
Dim Ws As Worksheet Dim test, test1 As String test = "" test1 = "" For Each Ws In ThisWorkbook.Worksheets If Ws.Name = "Réel" Then test = "OK" ElseIf Ws.Name = "Théorique" Then test1 = "OK" End If Next Ws If test <> "OK" Then MsgBox " veuillez au préalable importez un fichier Réel" Exit Sub End If If test1 <> "OK" Then MsgBox " veuillez au préalable importez un fichier Théorique" Exit Sub End If