IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème d'inversion jours et mois dans textbox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut problème d'inversion jours et mois dans textbox
    bonjour,
    je cherche pourquoi ce code m'inverse les jours jours et les mois dans ma textbox.
    Je sais qu'il y a beaucoup de sujet traité sur les dates.Mais la

    'procédure permettant la mise en forme automatique du champ date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Tdate_Change()
     Dim Valeur As Byte
        Tdate.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
        Valeur = Len(Tdate)
        If Valeur = 2 Or Valeur = 5 Then Tdate = Tdate & "/"
     
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Le code que tu montres-là n'inverse lui-même rien dans la textbox.
    Je devine que ton "inversion" se manifeste, mais pas à ce niveau.
    Si tu veux de l'aide : essaye donc d'être précis, s'il te plait.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    bonjour,
    merci pour la réponse rapide et autant pour moi.
    Effectivement c'est lorsque je valide et que sa vient incrémenter mon tableau excel que l'inversion se produit.
    J'ai trouver une solution en remplacent / par .
    Mais j'aurais aimer savoir pour sa ne fonctionne pas avec /

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Effectivement c'est lorsque je valide et que sa vient incrémenter mon tableau excel que l'inversion se produit.
    Voilà qui est TRES différent de ton exposé originel de la difficulté rencontrée, non ?

    Te viendrait-il à l'esprit que le code que tu dois montrer est alors celui qui exploite le contenu de ta textbox pour l'affecter à une cellule ? Non ?

    EDIT : et le "." à la place du "\" fait que ta cellule passe en texte et n'est plus une date, hein ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut.

    VBA et Excel ne parlent pas toujours le même langage concernant les dates. Il se pourrait que VBA considère la date comme étant au format m/d/y alors que ton Excel la considère probablement au format j/m/a. Dès lors que tu récupères un string via ton textbox, tu aurais intérêt à recomposer la date en utilisant DateSerial(YearValue, MonthValue, DayValue). Tu éviteras bien des misères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
      Dim Result As String
      Dim MyDate As Date
     
      Result = InputBox("Saisissez une date au format jj/mm/aaaa", "Saisie de date")
      MyDate = DateSerial(Right(Result, 4), Mid(Result, 4, 2), Left(Result, 2))
    End Sub
    Idéalement, tu te créeras une fonction de conversion, surtout si tu veux pouvoir convertir une date saisie selon plusieurs formats (1/3/17, 01/03/2017 ou 01-03-2017 par exemple). La fonction que je donne ici est simplissime et ne permet pas beaucoup de fioritures (aucune, en fait ), mais elle illustre que tu as intérêt à sortir le code de transformation (et de vérification) de ton code principal pour l'isoler dans une fonction. Elle est largement améliorable, avec par exemple un paramètre optionnel pour déterminer le format d'entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function getDateFromString(DateString As String) As Date
      If DateString Like "##/##/####" Then
        getDateFromString = DateSerial(Right(DateString, 4), Mid(DateString, 4, 2), Left(DateString, 2))
      End If
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Pierre
    VBA "raisonne" en effet en format anglo-saxon (mm/dd/yyyy)
    Dans son cas, l'utilisation d'une conversion par Cdate permettrait d'alimenter correctement sa cellule.
    Cependant : Cdate lui-même prend la liberté de "corriger" ce qui lui paraît manifestement erroné.
    Ainsi : Cdate("13/12/2017") sera traduit en la date 13/12/2017
    Mais qu'un utilisateur saisisse par erreur "01/13/2017" et cdate "corrigera" en 13/01/2017

    EDIT : et Dateserial lui-même (même en lui passant les valeurs numériques des sous-chaînes) lui jouerait un mauvais tour dans le cas d'un utilisateur étourdi.
    Ainsi : DateSerial(2017,13,1) aura pour résultat : 01/01/2018
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut Jacques,


    Citation Envoyé par unparia Voir le message
    Bonjour Pierre
    VBA "raisonne" en effet en format anglo-saxon (mm/dd/yyyy)[...]
    Cependant : Cdate lui-même prend la liberté de "corriger" ce qui lui paraît manifestement erroné.
    [...]
    Tout à fait. C'est pourquoi je n'aime pas spécialement cette fonction et que je préfère piloter moi-même le séquençage pour éviter les erreurs. La fonction que je donne en exemple est évidemment simple, car il n'est pas ici question de créer une fonction qui recevrait n'importe quoi en entrée et qui tenterait de transformer ce n'importe quoi en date. On a des spécialistes de l'usine à gaz sur nos forums, mais je pense qu'il faut rester simple et efficace...

    Merci pour ton complément d'info, en tout cas
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    On a des spécialistes de l'usine à gaz sur nos forums, mais je pense qu'il faut rester simple et efficace...
    C'est bien vrai
    Attention (mon edit) à Dateserial lui-même.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Ok pour le DateSerial avec des dépassements, mais c'est cela qui peut être très utile avec DateSerial, donc perso, j'aime bien... Mais c'est notamment pour cela que je dis que ma fonction de conversion est très (trop) légère. Elle illustre simplement mon dada de sortir du code principal ce qui n'a rien à y faire pour l'isoler dans une fonction perfectible, testable, maintenable, évolutive, ... (Bref, tu me comprends, je crois ).

    Par exemple, calculer une date d'échéance à 150 jours fin de mois (dernier jour du cinquième moi à partir de la date de facture), je fais dateserial(year(date),month(date)+6,0) sans me préoccuper du dépassement d'année et en appréciant de pouvoir utiliser le zérotième jour du mois pour aller au dernier jour du mois précédent...

    Il existe d'autres techniques mais j'aime assez bien celle-là.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Il existe d'autres techniques mais j'aime assez bien celle-là
    C'est tout simplement la plus pure de toutes. Elle a également ma très grande préférence.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    Tout à fait d'accord avec vous Jacques et Pierre, je vous ai mis

    Dans un poste auquel j'avais répondu, la feuille à traiter contenait des dates d'apparences correct, mais qui une fois traiter par VBA inverser les mois et les jours.

    La solution que j'avais donnée était de :
    1 - mettre les formats correspondant dans chaque colonnes dont la fameuse colonne Dates, et pas forcément laisser Excel le faire automatiquement
    2 - pour être sûr que la colonne date soit bien traiter par VBA, sélectionner les dates dans la colonne concernée et faire :
    Données => Convertir (on peut laisser "Largeur fixe") => faire 2 x Suivant => puis Sélectionner "Date" et choisir "JMA" => Fin

    Normalement les dates à traiter par VBA ne devrait plus poser de problème

    Edit : Avec cette solution on peut laisser les dates sous cette forme "XX/XX/XX"
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #12
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    merci a tous les deux pour vos réponses.
    Mais n'étant pas programmeur, je plante.
    Je regarde beaucoup pour essayer de comprendre et j'adapte aussi ce que je peux trouver
    Mon code fonctionne très bien dans un classeur et pas dan un autre. de plus il y a juste à entrer des chiffres pas de / ou . ou autre chose.
    J'ai tout revérifié mais je ne trouve pas.
    ci-dessous mon code
    si vous pouvez m'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Tdate_Change()
     
     Dim Valeur As Byte
        Tdate.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
        Valeur = Len(Tdate)
        If Valeur = 2 Or Valeur = 5 Then Tdate = Tdate & "/"
     
    End Sub

  13. #13
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    ryuautodidacte, j'ai essayé également votre solution en passant par "données"
    mais rien ne change

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Comme unparia te l'a dit, ton code n'a rien à voir dans l'inversion des mois/jours.

    il ajoute simplement une barre oblique après le deuxième ou cinquième caractère saisi, mais il n'inverse rien du tout.

    Ce qui plante, c'est que VBA va considérer ta valeur saisie comme une date au format mm/dd/yyy et pas au format dd/mm/yyyy. C'est donc après la saisie de la date complète, et donc après l'exécution du code que tu donnes ici, que l'inversion est effectuée.

    Donne le code qui traite la saisie pour l'injecter dans une cellule, si tu souhaites que nous t'aidions...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Te viendrait-il à l'esprit que le code que tu dois montrer est alors celui qui exploite le contenu de ta textbox pour l'affecter à une cellule ? Non ?
    tu le montres quand, ce code ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  16. #16
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    encore une fois, dans un autre classeur ce code fonctionne très bien
    et je n'ai eu besoin de rien rajouter
    je rentre la date dans ma textbox et quand je valide sa vient incrémenter automatiquement ma colonne date et au bon format. Sans rien faire ou rajouter.
    même en rajoutant du code pour effectuer des calculs, le résultat est est dans le bon ordre
    je peux si nécessaire vous faire passer les deux classeurs.

  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par orcinus Voir le message
    encore une fois, dans un autre classeur ce code fonctionne très bien[...]
    Encore une fois, ce n'est pas ce code (celui que tu as donné) qui pose problème, mais le code qui récupère la chaine saisie dans le textbox pour l'envoyer dans la cellule.

    Donne-nous ce code-là car c'est là qu'est le problème. Et c'est justement parce que le problème survient dans certains classeurs et pas dans d'autres que ce code nous est nécessaire pour t'aider... (Je ne vois pas comment l'exprimer de façon plus compréhensible... )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    Serais donc ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    'procédure permettant d'ajouter un nouvel enregistrement dans la base de données
    Private Sub btnajouter_Click()
     
    Sheets("source").Activate
    Sheets("source").Activate
    Range("A1").Select
    Range("A" & Rows.Count).End(xlUp).Select  'on se positionne sur la dernière ligne non vide
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select 'on se décale d'une ligne vers le bas
     
    ActiveCell = Tdate.Value
    ActiveCell.Offset(0, 1).Value = Cagence
    ActiveCell.Offset(0, 2).Value = Csite
    ActiveCell.Offset(0, 3).Value = Tnom
    ActiveCell.Offset(0, 4).Value = Cclient
    ActiveCell.Offset(0, 5).Value = Ccontrat
    ActiveCell.Offset(0, 6).Value = Cdomaine
    ActiveCell.Offset(0, 7).Value = Cdemande
    ActiveCell.Offset(0, 9).Value = Cbilan
    ActiveCell.Offset(0, 10).Value = Tfacturation
    ActiveCell.Offset(0, 11).Value = Tobservations
     
    MsgBox "nouvelle entrée bien enregistré", vbOKOnly + vbInformation, "CONFIRMATION D'ENREGISTREMENT"
     
    End Sub

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Probablement, oui...



    Modifie ta ligne activecell = tdate.value par activecell.value = DateSerial(Right(tdate.value, 4), Mid(tdate.value, 4, 2), Left(tdate.value, 2))
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre du Club Avatar de orcinus
    Homme Profil pro
    cadres
    Inscrit en
    Mai 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : cadres
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2008
    Messages : 95
    Points : 59
    Points
    59
    Par défaut
    sa marche super.
    Merci beaucoup et désolé pour ma lenteur.
    Je vais quand regarder de plus près et essayer de comprendre pourquoi sa fonctionne sur un classeur et pas un autre
    Se site et vos compétences est plus que utile pour des novices comme moi.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de date: Inversion jour et mois dans cellule de résultat
    Par tic59 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/11/2010, 21h04
  2. Probleme inversion jour et mois lors d'une copie par macro
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2008, 15h29
  3. [Dates] Inversion jour et mois
    Par Kephuro dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/08/2008, 18h51
  4. Récupérer le jour, le mois dans une date mysql
    Par sandddy dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/03/2008, 11h54
  5. [Dates] Afficher les jours du mois dans un formulaire
    Par Jimmy Monkey dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2007, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo