Macro excel

Résolu
Bonjour à tous, et merci pour toutes les infos qu'on y trouve.

Voilà mon probleme: j'aimerais avoir une macro pour une facture, quand j'entre le nom du client dans une cellule, j'ai dans une autre cellule une réfrence dans ce format (à peut-pres) : NomClientjjmmmaahhmmss
Svp, expliquez moi comment l'introduire parce que VBA je n'y connais rien.
Merci d'avance.
Configuration: Windows XP / Internet Explorer 8.0

13 réponses

  1. Modérateur
    Bonjour,
    Deux solutions pour votre souci.
    Supposons que vous écriviez le nom en A1 et que vous souhaitiez le résultat en B1.
    Par formule :
    en B1 écrire : =A1&" "&TEXTE(MAINTENANT();"jj/mm/aaaa hh:mm")

    Par macro :
    Sur votre feuille de calcul excel tapez ALT+F11 puis Insertion / Module et copiez/collez ce code :

    Sub numero_de_serie()
    [B1] = [A1] & Now
    End Sub

    Fermez la fenêtre Visual Basic

    Pour l'utiliser, sous la feuille de calcul concernée, tapez ALT+F8, sélectionnez "numero_de_serie" et cliquez sur exécuter.
    0
    1. Merci beaucoup pour ta réponse si rapide (exccuse moi si je te tutoi, c'est comme tu veux) mais ça n'a pas resolu mon probleme. je ne voulais pas avoir dans une cellule la date du jour.
      mais je voudrais copier dans une seule cellule le nom du client et coller à ce nom la date comme un numero de serie : nomclientjjmmmaahhmmss, voilà le format que je voudrais avoir.
      merci d'avance pour votre aide.
      0
      1. Salut

        regardes ces deux codes à placer dans la propriété de la feuille. Si le nom est en A, en tu auras soit avec le premier code la date et l'heure soit avec le deuxième code la valeur de A+ la date et l'heure

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 1 And Target.Row > 1 Then Target.Offset(0, 1) = Now
        End Sub

        ou

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 1 And Target.Row > 1 Then Target.Offset(0, 1) = Target & Now
        End Sub
        0
        1. Vraiment je sais que j'exagere, mais Mike-31, j'ai pas bien compris comment faire. donc je te donne tous:
          Je voudrais ecrire dans la cellule "A4" un nom : saggigo (par exemple), et dans la cellule "E9" trouver ceci:
          saggigo090310121953 (saggigojjmmmaahhmmss). biensur je voudrais quand j'enregistre le fichier excel, et que je l'ouvre à une date ulterieur, qu'il ne prenne pas la date de la seconde ouverture. je dis ça marcque j'ai mis la fonction "maintenant()" et j'ai changer de date pour voir, et il m'a mis la date changée. excusez moi encore, et merci à tous. au plaisir de vous lire.
          0
          1. Modérateur
            J'avais bien compris la question et (presque) bien répondu.
            Dans un module insère ce code :
            Sub numero_facture
            [E11] = [A4] & Format(Now, "ddmmyyhhmmss")
            End Sub

            Et lance la macro par ALT+F8
            0
          2. Re,
            Tu n’exagères pas, tu sais ce que tu veux, et de notre coté nous avons simplement du mal à comprendre.

            Tu souhaites en colonne B avoir la valeur que tu saisis en A+ la date et l’heure, c’est bien cela et de façon automatique !

            Le code que je t’ai donné, colles le dans la propriété de ta feuille, exemple si l’action doit se dérouler feuille 1
            Clic droit sur l’onglet de cette feuille/Visualiser le code, ce qui t’ouvrir la feuille de propriété, colle ce code

            Private Sub Worksheet_Change(ByVal Target As Range)
            If Target.Column = 1 And Target.Row > 1 Then Target.Offset(0, 1) = Target & Now
            End Sub

            Si tu saisis Saggigo en A, en B tu auras Saggigo09/03/2010 13:13:53

            reste peut être à revoir le format
            0
          3. Modérateur
            Salut Mike,
            Ta procédure ne risque t'elle pas de changer le résultat? En fait, comme il souhaite avoir le résultat une fois pour toutes, j'ai zappé le côté "évènementiel"...
            0
        2. Salut Pijaku,

          Sur la demande initiale de Saggigo "quand j'entre le nom du client dans une cellule, j'ai dans une autre cellule une réfrence dans ce format (à peut-pres) : NomClientjjmmmaahhmmss"
          il confirme ce coté évènementiel sur le post 4
          "Je voudrais ecrire dans la cellule "A4" un nom : saggigo (par exemple), et dans la cellule "E9" trouver ceci:
          saggigo090310121953"

          Enfin pour moi c'est ce que j'ai retenu d'ou mon code reproposé post 6. Il est certain que s'il change un nom déjà saisis en A, en B la date et l'heure changeront. Pour y remédier on peut proposer effectivement le déclenchement avec un bouton
          et le code s'appliquerait sur une sélection
          ou alors on écrit un code qui demande la sélection de la plage à traiter avec une inputbox

          Cordialement
          Mike-31

          Une période d'échec est un moment rêvé pour semer les graines du savoir.
          0
          1. Merci pour vos reponses. mais il ya des lacunes:
            dans la proposition de pijaku, si je vide la cellule A4 j'aurais juste le jjmmmaahhmmss, et quand j'insere le nom, la cellule E9 ne s'actualise pas.

            et pour la proposition de mike31, je ne sais pas pourquoi, mais ça ne donne rien. et si je supprime le contenu de A4, et bien j'ai un bug
            0
            1. mike, c exactement ce que je voudrais qui se passe

              Salut Pijaku,

              Sur la demande initiale de Saggigo "quand j'entre le nom du client dans une cellule, j'ai dans une autre cellule une réfrence dans ce format (à peut-pres) : NomClientjjmmmaahhmmss"
              il confirme ce coté évènementiel sur le post 4
              "Je voudrais ecrire dans la cellule "A4" un nom : saggigo (par exemple), et dans la cellule "E9" trouver ceci:
              saggigo090310121953"

              mais le probleme c'est il ne se passe rien. rien ne s'actualise
              0
              1. Modérateur
                Oui, tu veux que cela se fasse de manière automatique (sans que tu ne touches à rien), mais que cela soit de manière définitive, que cela n'évolue pas. Je pense que ma méthode est valable, sauf pour "l'automatisation". Néanmoins, ALT+F8 ne constitue pas non plus un gros effort...
                0
            2. Re,

              Alors dans la propriété feuille colles ce code (Clic droit sur l’onglet de cette feuille/Visualiser le code, ce qui t’ouvrir la feuille de propriété) et tu auras Saggilo090310140921

              Private Sub Worksheet_Change(ByVal Target As Range)
              If Target.Column = 1 And Target.Row > 1 Then Target.Offset(0, 1) = Target & Format(Now, "ddmmyyhhmmss")
              End Sub
              0
              1. j'ai fais ce que tu m'a dis; et quand j'ai introduit le nom du client, il ne s'est rien passer, et quand je l'ai supprimer, j'ai eu un bug pour : Target.Offset(0, 1) = Target & Format(Now, "ddmmyyhhmmss"), j'ai meme esseyé sur une autre feuille, et pareil, rien ne se passe.
                0
                1. ça marche , j'ai retrouvé le code dans une cellule cachée "F4" mais moi je la veux en E9 ya pas un moyen de la retrouver en E9 sans faire "=F4"
                  ausis quand je supprime le nom du client, il y a toujours le bug tu ne saurais pourquoi?
                  0
                  1. Re,
                    traitons un problème à la fois, "le Bug" comme tu dis lorsque tu supprimes le nom veux tu que le nom et la référence s'efface, si oui dans mon exemple propriétés de la feuille1 remplaces le code par ce dernier et tiens nous au courrant

                    Private Sub Worksheet_Change(ByVal Target As Range)
                    If Target.Column = 1 And Target.Row > 1 Then
                    If Target <> "" Then Target.Offset(0, 1) = Target & Format(Now, "ddmmyyhhmmss")
                    If Target = "" Then Target.Offset(0, 1).ClearContents
                    End If
                    End Sub

                    https://www.cjoint.com/?djoP7ONl3f
                    0
                    1. ça marche nikel. merci beaucoup pour votre aide. et bonne journée. vous etes super
                      0