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 :

pb ecriture excel


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut pb ecriture excel
    Bonjour,
    J'ai un problème avec une macro que je suis en train de construire.
    Je souhaite écrire sur une mama ligne, différentes données inscritent dans plusieurs TextBox de ma form.
    Cela fonctionne très bien pour la première ligne, mais pas pour les suivantes.
    En effet si je me met sur la troisième ligne, les deux premières cellules que je rempli sont bien a leur place, mais la 3ème et 4ème se trouve sur la Ligne N°5!
    Je ne comprend pas, de plus chaque fois l'écart est plus grand...
    Voici mon code
    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
    25
    26
    27
    28
    29
     
     
    Private Sub UserForm1_Initialize()
        Me.StartUpPosition = 2  'centre la form dans la fenetre
        Row As Integer
        Collum As Integer
    End Sub
     
    Private Sub CommandButton1_Click()
        Unload UserForm1     'ferme la UserForm
    End Sub
     
    Private Sub TextBox1_Change()
        ActiveCell.Value = TextBox1.Value
    End Sub
     
    Private Sub TextBox2_Change()
        ActiveCell.Next = TextBox2.Value
    End Sub
     
    Private Sub TextBox3_Change()
        Collum = 2
        ActiveCell.Next(ActiveCell.Row, Collum) = TextBox3.Value
    End Sub
     
    Private Sub TextBox4_Change()
        Collum = 3
        ActiveCell.Next(ActiveCell.Row, Collum) = TextBox4.Value
    End Sub
    Si quelqu'un peut m'aider ça serai cool par ce que je n'arrive pas à comprendre d'où vient le problème.
    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Pour commencer, concernant la partie du code se trouvant dans l'évènement Initialise de ton UserForm, tu peux tout supprimer, aucune utilité.
    Par défaut un UserForm s'affiche au centre de l'écran.
    Les variables Row et Column sont des variables utilisées en base par VBA, tu ne peux pas toi les redéfinir et de toute façon ce que tu as écrit n'est premièrement pas correct et deuxièmement ne sert à rien.
    En résumé on vire tout ça

    Ensuite si je comprend bien, la ligne dans laquelle doit s'inscrire les données introduites dans tes TextBox est sélectionnée manuellement. Je verrais bien quelque chose comme 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
    Private Sub TextBox1_Change()
        Cells(ActiveCell.Row, 1) = TextBox1.Value
    End Sub
     
    Private Sub TextBox2_Change()
        Cells(ActiveCell.Row, 2) = TextBox2.Value
    End Sub
     
    Private Sub TextBox3_Change()
        Cells(ActiveCell.Row, 3) = TextBox3.Value
    End Sub
     
    Private Sub TextBox4_Change()
        Cells(ActiveCell.Row, 4) = TextBox4.Value
    End Sub
    ce qui permet de sélectionner n'importe quelle cellule de la ligne, les données s'inscriront toujours dans les bonnes colonnes

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Merci pour cette réponse,
    pour ce qui est du code dans mon initialize, je suis dsl, je me suis dit que ça devait ressembler au C++, je pensais donc faire des variables globales comme cela... Je suis un novice en VBA....

    J'ai trouver une solution très simple à mon pb.
    Il me suffit de mettre tout simplement une serie de next... Je ne le savait pas mais les propriétés next peuvent s'additionnées...
    en gros cela donne quelque chose de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveCell.Next.Next.... = TextBox1.Value
    Mais je conçoit le fait que ce soit bcp moin propre et bcp moin pratique dans le cas d'une grande liste de de cellules à remplir...

    Merci pour cette méthode et ces explications...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonsoir,
    Ludojojo, si tu « viens » d’un autre langage, précises le d’entrée, les gens liront ton code différemment

    Sinon, personnellement dans ce genre de situation (et dans la plupart des cas), j’éviterais l’utilisation de la propriété Next , c’est la porte ouverte aux surprises…
    D’une part dans l’aide vba elle n’apparaît pas toute seule, en passant par les propriétés de Range, oui…
    Mais en plus si tu lis ce qui en est dit :

    Cette propriété renvoie un objet Chart, Range ou Worksheet qui représente la prochaine feuille ou cellule. En lecture seule.
    Notes
    Si l'objet est une plage, cette propriété simule l'utilisation de la touche TAB, bien que la propriété renvoie la prochaine cellule sans la sélectionner.
    Dans une feuille protégée, cette propriété renvoie la prochaine cellule non verrouillée. Dans une feuille non protégée, elle renvoie toujours la cellule située immédiatement à droite de la cellule spécifiée.

    Donc l’action résultante de ta macro peut clairement changer si tu protèges ta feuille !

    Je ne saurais donc te conseiller d’utiliser en lieu et place la propriété qui me semble faite pour à savoir : Offset(row, column) qui est souple, puissante, simple et te permet de te placer où tu veux sans problème dans toutes les directions . Vois dans l'aide, elle est bien documentée...

    cordialement,

    Didier

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Voila le code que j'avais trouvé...
    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
     
    Private Sub TextBox1_Change()
        ActiveCell.Value = TextBox1.Value
    End Sub
     
    Private Sub TextBox2_Change()
        ActiveCell.Next = TextBox2.Value
    End Sub
     
    Private Sub TextBox3_Change()
        Collum = 2
        ActiveCell.Next.Next = TextBox3.Value
    End Sub
     
    Private Sub TextBox4_Change()
        Collum = 3
        ActiveCell.Next.Next.Next = TextBox4.Value
    End Sub
    En effet il ne ma plaisait pas vraiment...
    Merci pour la solution...
    A très bientôt par ce que je pense que je vais avoir besoin encore de nombreuses info...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecriture dans un fichier excel => performances
    Par Acarp47 dans le forum Access
    Réponses: 2
    Dernier message: 11/01/2007, 13h14
  2. [VBA-Excel]probleme d'ecriture dans un fichier ini
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 18h45
  3. ecriture dans une textbox excel
    Par lensois62 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2006, 12h34
  4. [lecture/ecriture] fichier excel
    Par ethno dans le forum C
    Réponses: 4
    Dernier message: 14/04/2006, 19h47
  5. [OLE Excel] formatter ecriture float dans une cellule
    Par netah25 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/01/2006, 10h09

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