Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu
de la cellule H1 de la feuille "base".
Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci.
Alex
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
If answer = Empty Then
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de news:
dft3ut.3vuds27.1@maison.ici...
> Bonsoir,
>
> Essaie avec (non testé) :
>
> var = Sheets("base").Range("H1").text
> Sheets("MasqueComptabilité").Range("G2:H402").Select
> Selection.Replace What:="ABC", Replacement:=var, LookAt:=xlPart, _
> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
> ReplaceFormat:=False
>
> @+
> FxM
>
>
> af a écrit :
>> Bonjour,
>>
>> But :
>> Remplacer les données d'une plage par la valeur d'une cellule par une
>> macro.
>>
>> Les données :
>> Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du
>> style 01, 02, 03, etc...) qui représentent les mois de l'année.
>> Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
>> valeur ABC (qui correspond au nom des feuilles 01 à 12)
>>
>> Sur cette feuille2, je souhaite remplacer tous les ABC de la plage
>> G2:H402 par la valeur de la feuille1 en H1.
>>
>> Ca parait tout simple, mais je bloque.
>>
>> Merci d'avance pour vos réponses.
>>
>> Voici le code de cette première phase :
>>
>>
>>
>>
>> Sub Phase01()
>> '
>> ' Phase01 Macro
>> ' Macro enregistrée le 02/09/2005 par Alex
>> '
>> ' donnée principale
>> Sheets("base").Select
>> Range("H1").Select
>>
>> ' valeur PRIMAIRE
>> Dim Msg, Style, Title, Help, Ctxt, Response, MyString
>> Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
>> Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
>> Title = "Mois à exporter en compta " ' Définit le titre.
>> ' Affiche le message.
>> Response = MsgBox(Msg, Style, Title)
>> If Response = vbYes Then ' L'utilisateur a choisi Oui.
>> MyString = "Oui" ' Effectue une action.
>> ' déclare variable de chaine
>> Dim answer As String
>> ' affecte la valeur à envoyer dans la boite de dialogue
>> answer = InputBox(Prompt:="quelle est la feuille à traiter?")
>> 'boucle
>> If answer = Empty Then
>> MsgBox Prompt:="saisir un format de mois (00) comme les
>> feuilles excel"
>>
>> Else
>> answer = String(2, 99)
>> Sheets("base").Select
>> Range("H1").Copy
>> Sheets("MasqueComptabilité").Select
>> Range("G2:H402").Select
>> Selection.Replace What:="ABC", Replacement:="'02'",
>> LookAt:=xlPart, _
>> SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,
>> _
>> ReplaceFormat:=False
>>
>> ' purge des données sur "export"
>> Range("A1:C1").Select
>> Sheets("export").Select
>> Cells.Select
>> Selection.ClearContents
>>
>> ' copie des infos sur "export" depuis "masque comptabilité"
>> Range("A1").Select
>> Sheets("BASE").Select
>> Range("A1:C1").Select
>> Sheets("MasqueComptabilité").Select
>> Range("A1:J406").Select
>> Selection.Copy
>> Sheets("export").Select
>> ActiveSheet.Paste
>> Range("A1").Select
>> Application.CutCopyMode = False
>> Calculate
>> Range("B2").Select
>> Sheets("BASE").Select
>> Range("H1").Select
>>
>> 'Positionnement pour vérification
>> Sheets("export").Select
>> Range("I405").Select
>> ' message
>> MsgBox "dans cette étape, vous pouvez modifier des données.
>> L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
>> deuxième ligne est pour l'analytique"
>>
>>
>> End If
>>
>>
>>
>>
>> Else ' L'utilisateur a choisi Non.
>> MyString = "Non" ' Effectue une action.
>> MsgBox "aucune action effectuée"
>>
>>
>> End If
>> End Sub
>>
>>
>>
>> La phase 2 fonctionne. C'est un export comptable et un import au format
>> SAGE.
>> Il me reste plus que cette broutille !
>> Faut-il déclarer une variable ?
>>
>> Alexandre
>>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Gaboly
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?
Alexandre
-- Cordialement,
Michel Gaboly www.gaboly.com
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou
contiennent-elles un des 12 noms, auquel cas seules celles qui
contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à
remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est
inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le
remplacement devant être au premier plan. Dans le cas contraire, il faut
qualifier le second range :
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu
de la cellule H1 de la feuille "base".
Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci.
Alex
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
If answer = Empty Then
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de news:
dft3ut.3vuds27.1@maison.ici...
But :
Remplacer les données d'une plage par la valeur d'une cellule par une
macro.
Les données :
Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du
style 01, 02, 03, etc...) qui représentent les mois de l'année.
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage
G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
' affecte la valeur à envoyer dans la boite de dialogue
answer = InputBox(Prompt:="quelle est la feuille à traiter?")
'boucle
If answer = Empty Then
MsgBox Prompt:="saisir un format de mois (00) comme les
feuilles excel"
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format
SAGE.
Il me reste plus que cette broutille !
Faut-il déclarer une variable ?
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?
Alexandre
-- Cordialement,
Michel Gaboly www.gaboly.com
af
Je suis désolé, je dois être une grosse quiche. Pour refaire un point global : * une feuille "base" qui a sur la cellule H1 la valeur 01, 02, 03 etc... qui correspond au mois de l'année (au format texte) * 12 feuilles appelées de 01 à 12 qui sont des saisies de caisse jour par jour. * une feuille "MasqueCompabilité" qui comprend la structure complète de l'écriture comptable. Et dans cette zone G2:H402, la formule étant ='01'!une zone de la feuille 01 Pour le moment, il y a ABC. Mais le but étant de remplacer cette valeur ABC par le contenu de la cellule H1 de la feuille "base". La complexité étant de remplacer par le contenu d'une cellule Alors, je cafouille.
Les phases sont les suivantes : * La macro copie des données * phase de vérification * La macro export selon un format SAGE * L'import s'effectue en compta
Help me !
"Michel Gaboly" a écrit dans le message de news: es$
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?
Alexandre
-- Cordialement,
Michel Gaboly www.gaboly.com
Je suis désolé, je dois être une grosse quiche.
Pour refaire un point global :
* une feuille "base" qui a sur la cellule H1 la valeur 01, 02, 03 etc... qui
correspond au mois de l'année (au format texte)
* 12 feuilles appelées de 01 à 12 qui sont des saisies de caisse jour par
jour.
* une feuille "MasqueCompabilité" qui comprend la structure complète de
l'écriture comptable. Et dans cette zone G2:H402, la formule étant ='01'!une
zone de la feuille 01
Pour le moment, il y a ABC. Mais le but étant de remplacer cette valeur ABC
par le contenu de la cellule H1 de la feuille "base".
La complexité étant de remplacer par le contenu d'une cellule
Alors, je cafouille.
Les phases sont les suivantes :
* La macro copie des données
* phase de vérification
* La macro export selon un format SAGE
* L'import s'effectue en compta
Help me !
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
es$0S73tFHA.3336@TK2MSFTNGP10.phx.gbl...
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou
contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent
l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le
contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est
inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement
devant être au premier plan. Dans le cas contraire, il faut qualifier le
second range :
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le
contenu
de la cellule H1 de la feuille "base".
Je remets le code ici... si quelqu'un a une autre idée. Par avance,
merci.
Alex
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
If answer = Empty Then
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de news:
dft3ut.3vuds27.1@maison.ici...
But :
Remplacer les données d'une plage par la valeur d'une cellule par une
macro.
Les données :
Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du
style 01, 02, 03, etc...) qui représentent les mois de l'année.
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage
G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les
boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
' affecte la valeur à envoyer dans la boite de dialogue
answer = InputBox(Prompt:="quelle est la feuille à traiter?")
'boucle
If answer = Empty Then
MsgBox Prompt:="saisir un format de mois (00) comme les
feuilles excel"
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format
SAGE.
Il me reste plus que cette broutille !
Faut-il déclarer une variable ?
Je suis désolé, je dois être une grosse quiche. Pour refaire un point global : * une feuille "base" qui a sur la cellule H1 la valeur 01, 02, 03 etc... qui correspond au mois de l'année (au format texte) * 12 feuilles appelées de 01 à 12 qui sont des saisies de caisse jour par jour. * une feuille "MasqueCompabilité" qui comprend la structure complète de l'écriture comptable. Et dans cette zone G2:H402, la formule étant ='01'!une zone de la feuille 01 Pour le moment, il y a ABC. Mais le but étant de remplacer cette valeur ABC par le contenu de la cellule H1 de la feuille "base". La complexité étant de remplacer par le contenu d'une cellule Alors, je cafouille.
Les phases sont les suivantes : * La macro copie des données * phase de vérification * La macro export selon un format SAGE * L'import s'effectue en compta
Help me !
"Michel Gaboly" a écrit dans le message de news: es$
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?
Alexandre
-- Cordialement,
Michel Gaboly www.gaboly.com
af
Merci ca fonctionne bien maintenant
C'est génial !
"Michel Gaboly" a écrit dans le message de news: es$
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?
Alexandre
-- Cordialement,
Michel Gaboly www.gaboly.com
Merci ca fonctionne bien maintenant
C'est génial !
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
es$0S73tFHA.3336@TK2MSFTNGP10.phx.gbl...
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou
contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent
l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le
contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est
inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement
devant être au premier plan. Dans le cas contraire, il faut qualifier le
second range :
Sub Test()
Dim Ref As String
Ref = Sheets("Base").Range("H1")
Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False
End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le
contenu
de la cellule H1 de la feuille "base".
Je remets le code ici... si quelqu'un a une autre idée. Par avance,
merci.
Alex
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
If answer = Empty Then
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
"FxM" <nullos@greuchmeu.ici> a écrit dans le message de news:
dft3ut.3vuds27.1@maison.ici...
But :
Remplacer les données d'une plage par la valeur d'une cellule par une
macro.
Les données :
Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du
style 01, 02, 03, etc...) qui représentent les mois de l'année.
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une
valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage
G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01()
'
' Phase01 Macro
' Macro enregistrée le 02/09/2005 par Alex
'
' donnée principale
Sheets("base").Select
Range("H1").Select
' valeur PRIMAIRE
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les
boutons.
Title = "Mois à exporter en compta " ' Définit le titre.
' Affiche le message.
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
' déclare variable de chaine
Dim answer As String
' affecte la valeur à envoyer dans la boite de dialogue
answer = InputBox(Prompt:="quelle est la feuille à traiter?")
'boucle
If answer = Empty Then
MsgBox Prompt:="saisir un format de mois (00) comme les
feuilles excel"
' purge des données sur "export"
Range("A1:C1").Select
Sheets("export").Select
Cells.Select
Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité"
Range("A1").Select
Sheets("BASE").Select
Range("A1:C1").Select
Sheets("MasqueComptabilité").Select
Range("A1:J406").Select
Selection.Copy
Sheets("export").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Calculate
Range("B2").Select
Sheets("BASE").Select
Range("H1").Select
'Positionnement pour vérification
Sheets("export").Select
Range("I405").Select
' message
MsgBox "dans cette étape, vous pouvez modifier des données.
L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la
deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
MsgBox "aucune action effectuée"
End If
End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format
SAGE.
Il me reste plus que cette broutille !
Faut-il déclarer une variable ?
"Michel Gaboly" a écrit dans le message de news: es$
Bonjour,
Un truc pas très clair :
Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Toutes les cellules contiennent la même chose à un instant donné ou contiennent-elles un des 12 noms, auquel cas seules celles qui contiennent l'un ces de ces noms (en l'occurrence "ABC") sont à remplacer par le contenu de la cellule H1 de "Base" ?
Si elles contiennent toutes la même chose, le recherche remplacer est inutile ; il suffit de reporter la valeur de H1 ou d'inscrire "ºse!H1"
Sinon,
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
devrait suffire, la feuille sur laquelle doit s'effectuer le remplacement devant être au premier plan. Dans le cas contraire, il faut qualifier le second range :
Sub Test() Dim Ref As String Ref = Sheets("Base").Range("H1") Sheets("Feuil2").Range("G2:H402").Replace "ABC", Ref, xlWhole, , False End Sub
Merci pour ta réponse mais je n'ai aucun remplacement de ABC par le contenu de la cellule H1 de la feuille "base". Je remets le code ici... si quelqu'un a une autre idée. Par avance, merci. Alex
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String If answer = Empty Then
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
But : Remplacer les données d'une plage par la valeur d'une cellule par une macro.
Les données : Sur une Feuille1, dans la cellule H1, j'ai une valeur de type texte (du style 01, 02, 03, etc...) qui représentent les mois de l'année. Sur une Feuille2, toute une plage fixe de donnée G2:H402 contient une valeur ABC (qui correspond au nom des feuilles 01 à 12)
Sur cette feuille2, je souhaite remplacer tous les ABC de la plage G2:H402 par la valeur de la feuille1 en H1.
Ca parait tout simple, mais je bloque.
Merci d'avance pour vos réponses.
Voici le code de cette première phase :
Sub Phase01() ' ' Phase01 Macro ' Macro enregistrée le 02/09/2005 par Alex ' ' donnée principale Sheets("base").Select Range("H1").Select
' valeur PRIMAIRE Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "macro lancée, voulez-vous continuer ?" ' Définit le message. Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons. Title = "Mois à exporter en compta " ' Définit le titre. ' Affiche le message. Response = MsgBox(Msg, Style, Title) If Response = vbYes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. ' déclare variable de chaine Dim answer As String ' affecte la valeur à envoyer dans la boite de dialogue answer = InputBox(Prompt:="quelle est la feuille à traiter?") 'boucle If answer = Empty Then MsgBox Prompt:="saisir un format de mois (00) comme les feuilles excel"
' purge des données sur "export" Range("A1:C1").Select Sheets("export").Select Cells.Select Selection.ClearContents
' copie des infos sur "export" depuis "masque comptabilité" Range("A1").Select Sheets("BASE").Select Range("A1:C1").Select Sheets("MasqueComptabilité").Select Range("A1:J406").Select Selection.Copy Sheets("export").Select ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False Calculate Range("B2").Select Sheets("BASE").Select Range("H1").Select
'Positionnement pour vérification Sheets("export").Select Range("I405").Select ' message MsgBox "dans cette étape, vous pouvez modifier des données. L'équilibre doit être respecté. Sur les comptes de classe 6 et 7, la deuxième ligne est pour l'analytique"
End If
Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. MsgBox "aucune action effectuée"
End If End Sub
La phase 2 fonctionne. C'est un export comptable et un import au format SAGE. Il me reste plus que cette broutille ! Faut-il déclarer une variable ?