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. ça marche nikel. merci beaucoup pour votre aide. et bonne journée. vous etes super
    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 , 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. 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. 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. 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. 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. 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. 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

                  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. 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. 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