Fonction droite sur du VBA

Bonjour a tous,

Je tenais d'avance à remercier les personnes qui prendront un petit peu de leur temps pour chercher à m'aider.

Voici mon problème: Je souhaiterais obtenir en A2 sur la feuille 2, copie des 8 dernier caractère de A1 en Feuille 1, et ensuite une fois l'info récupérée mettre en rouge les XXXXXXX. Le tout en cliquant sur un boutant grâce a du VBA.

En pièce jointe un fichier test :)

Une nouvelle fois merci d'avance pour le temps consacré.

cordialement

Sébastien

Bonjour,

J'ai repris ton code sortit de l'enregistreur et cela devrait faire le job

Sub Macro1()
'
    Sheets("Feuil2").Range("A2").Value = Right(Sheets("Feuil1").Range("A1"), 8)
    Sheets("Feuil1").Range("A1").Select
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "FACTURE du XXXXXXXX"

End Sub

leakim

Bonjour Leakim,

Merci d'avoir pris le temps de m'aider.

Lorsque je copie ton code dans ma macro, pour la feuille 1 cela fonctionne, mais pour la feuille 2 en A2 la cellule reste vide.

Je travaille ce matin, je vais regarder cela également de mon coté, car je n'arrivais pas à faire ma fonction droite dans mon VBA. Avec ton aide je pense déjà y voir plus clair et je vais essayer dans mon fichier réel. MAis il est vrai que je ne comprends pas pourquoi la cellule A2 en feuille 2 reste vide.

Merci bcp

Bonjour,

Teste ceci

Sub Droite()
    Sheets("Feuil2").Range("A2").Value = Right(Range("A1"), 8)
    Range("A1") = "FACTURE du XXXXXXXX"
    Range("A1").Characters(Start:=12, Length:=8).Font.Color = RGB(255, 0, 0)
End Sub

Bonjour M12,

Merci cela fonctionne sur mon fichier test, je vais tester sur mon fichier.

Cordialement

Sébastien

Sur mon fichier fichier réel j'ai besoin dans le "right" de lui indiqué une autre feuille

Voici ma ligne de code :

Sheets("Facturier").Range("A" & ligne).Value = Right(Sheets("modele").Range("A8"), 8)

Mais hélas cela ne marche pas

Alors que celle ci fonctionne :

Sheets("Facturier").Range("E" & ligne).Value = Sheets("modèle").Range("H27").Value

Merci d'avance pour votre aide

Cordialement

Sébastien

Re,

Sans voir le classeur, difficile de répondre

Regarde quand même le nom de ta feuille

sur tes deux exemples modèle ou modele

Je comprends que sans le classeur ce n'est pas évident.

Mais dans le respect de la charte d'utilisation ,j'ai des données personnels, c'est pour cela que si je comprends avec mon fichier test je me suis dit que j'allais pouvoir le reproduire aisément.

Je regarde cela. sinon j'anonymiserai mon fichier pour le transmettre.

Merci pour votre aide

Cordialement

Sébastien

Cela fonction quasiment comme je le désire.

merci a tous.

Mon dernier petit soucis est que dans ma recopie dans mon autre onglet, le format date est anglosaxons cad : mm/jj/aaaa

J'ai beau aller dans format de cellule et modifié le format, cela ne marche pas. Je recopie la mise en forme avec le bon format d'une autre date en jj/mm/aaaa

Il en est de même avec le format personnalisé jj/mm/aaaa

Cordialement

Sébastien

Teste ceci

Sheets("Feuil2").Range("A2").Value = Format(Right(Range("A1"), 8), "dd/mm/yy")

ou ceci

Sheets("Feuil2").Range("A2").Value = CDate(Right(Range("A1"), 8)

Salut mrPetitChat,
Salut l'équipe,

ou ça..

Sheets("Feuil2").Range("A2").Value = Format(Right(Range("A1"), 8), "[$-040C]dd/mm/yyyy")


A+

Merci a tous, pour vos proposition, mais j'ai essayer les 3 et elles en fonctionnement pas.

Je suis a court d'idée.

Re, place un screenshop de ta feuille contenant la date de la feuille au format US

image

Pour une saisie du 03/09/22.

En espérant que ce soit cela que vous attendiez

Re,

Pas la feuille ci, l'autre où il y a la date en format US

et si tu me places une copie écran du même fichier que tu as placé, j'ai le même

C'est sur l'original (ton fichier de travail)

voir si la cellule est au format texte, etc

image

VOici l'endroit ou je saisi la date ou je veux extraire ma date avec la fonction droite

image

Et le résultat après la macro

Re,

Avec cette ligne, chez moi la date est bonne

Sheets("Feuil2").Range("A2").Value = CDate(Right(Range("A1"), 8))

Dans mon fichier de travail j'y insert cela, mais j'ai le débogueur qui se met en route sur la 2eme ligne ci dessous

 Sheets("Facturier").Range("E" & ligne).Value = Sheets("modèle").Range("H27").Value
   Sheets("Facturier").Range("A" & ligne).Value = CDate(Right(Sheets("Facturier").Range("A8"), 8))
    Sheets("Facturier").Range("A8") = "FACTURE du XXXXXXXX"
    Sheets("Facturier").Range("A8").Characters(Start:=12, Length:=8).Font.Color = RGB(255, 0, 0)

Re,

Normal, tu utilise une variable ligne qui n'est pas initialisée

d'autre part explique moi

Sheets("Facturier").Range("A" & ligne).Value = CDate(Right(Sheets("Facturier").Range("A8"), 8))

tu copies la date de la cellule A8 de FACTURIER dans la cellule A & ligne de FACTURIER

Donc regarde bien quels sont les onglets se source et de destination

et incorpore les deux premières lignes de cette macro pour instancier la variable ligne

Dim ligne%
  ligne = Sheets("Facturier").Range("A" & Rows.Count).End(xlUp).Row + 1

  Sheets("Facturier").Range("E" & ligne).Value = Sheets("modèle").Range("H27").Value
  Sheets("Facturier").Range("A" & ligne).Value = CDate(Right(Sheets("Facturier").Range("A8"), 8))
  Sheets("Facturier").Range("A8") = "FACTURE du XXXXXXXX"
  Sheets("Facturier").Range("A8").Characters(Start:=12, Length:=8).Font.Color = RGB(255, 0, 0)

Grace a votre expertise et votre vigilance cela fonctionne :)

Merci beaucoup.

Cordialement

Sébastien

Rechercher des sujets similaires à "fonction droite vba"