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 :

aller à la cellule en dessous quand elle est pleine


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut aller à la cellule en dessous quand elle est pleine
    Bonjour,
    en 2 jours on m'a aidé 2 fois, comme on dit jamais 2 sans trois .
    J'ai une form avec des checkbox et une textbox. Quand je clique sur une checkbox ça affiche le mot dans ma texte box et ainsi de suite pour chaque check box cochées.
    Donc j'ai un bouton ok et quand j'appuis dessu ça envoie le texte de la textbox dans la 1er ligne vide de ma feuille excel.
    Mon probleme est que je travaille sur 6 colonnes et que je ne veut pas que le texte dépasse, il faudrait que quand je clik ok, si le nombre de mot est trop grand par rapport a ma zone de travail que ça m'inscrive le reste à la ligne en dessous.
    Est ce possible?
    je colle le code que j'utilise
    #(J'utilise call summarize pour chaque terme, j'en ai notté que 1 pour pas polluer de lignes inutiles)

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub Cboxciabatta_Click()
    Call summarize
    End Sub
     
    Sub summarize()
     
         If cboxciabatta.Value = True Then a = "Ciabatta"
         If cboxcereal.Value = True Then a = a & "- Cereal"
         If cboxgalette.Value = True Then a = a & "- Galette"
         If CboxJambon.Value = True Then a = a & "- Jambon"
         If cboxsteack.Value = True Then a = a & "- Steack"
         If CboxPoulet.Value = True Then a = a & "- Poulet"
         If CboxKebab.Value = True Then a = a & "- Kebab"
         If cboxbacon.Value = True Then a = a & "- Bacon"
         If cboxchorizo.Value = True Then a = a & "- Chorizo"
         If cboxemmental.Value = True Then a = a & "- Emmental"
         If CboxMozzarella.Value = True Then a = a & "- Mozzarella"
         If Cboxgorgonzola.Value = True Then a = a & "- Gorgonzola"
         If Cboxgouda.Value = True Then a = a & "- Gouda"
         If Cboxchevre.Value = True Then a = a & "- Chevre"
         If Cboxvinaigrette.Value = True Then a = a & "- Maison"
         If Cboxalgerienne.Value = True Then a = a & " - Algerienne"
         If cboxbarbecue.Value = True Then a = a & "- Barbecue"
         If cboxcurry.Value = True Then a = a & "- Curry"
         If cboxbalsamique.Value = True Then a = a & "- Balsamique"
         If Cboxblanche.Value = True Then a = a & "- Blanche"
         If cboxmayo.Value = True Then a = a & "- Mayonnaise"
         If Cboxmoutarde.Value = True Then a = a & "- Moutarde"
         If cboxharissa.Value = True Then a = a & "- Harissa"
         If cboxhuile.Value = True Then a = a & "- Huile d'olive"
         If cboxketchup.Value = True Then a = a & "- Ketchup"
         If cboxsamourai.Value = True Then a = a & "- Samourai"
         If Cboxcerise.Value = True Then a = a & "- Cerise"
         If Cboxcornichon.Value = True Then a = a & "- Cornichon"
         If Cboxconcombre.Value = True Then a = a & "- Concombre"
         If cboxMais.Value = True Then a = a & "- Mais"
         If Cboxoignon.Value = True Then a = a & "- Oignon"
         If Cboxolive.Value = True Then a = a & "- Olive"
         If cboxpoivron.Value = True Then a = a & "- Poivron"
         If cboxsoja.Value = True Then a = a & "- Soja"
         If Cboxtomate.Value = True Then a = a & "- Tomate"
         If cboxmache.Value = True Then a = a & "- Mache"
         If cboxmesclun.Value = True Then a = a & " - Mesclun"
         If cboxroquette.Value = True Then a = a & " - Roquette"
     
         If Left(a, 3) = " - " Then a = Right(a, Len(a) - 3)
         txtsandwich.Value = a
     
     
    End Sub
     
    Private Sub cmdSandwich_Click()
    Worksheets("FACTURE").Activate
    NumLigneVide = ActiveSheet.Columns(1).Find("").Row
     
    ActiveSheet.Cells(NumLigneVide, 1) = txtsandwich.Text
    txtsandwich.Text = ""
     
    End Sub
    #

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Peut être utilise WrapText

    Sinon, ton code pourra être écrit 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Summarize()
    Dim a As String
    Dim Ctrl As Control
     
    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.CheckBox Then
            If Ctrl Then a = a & "- " & Mid(Ctrl.Name, 5)
        End If
    Next Ctrl
    If Len(a) > 0 Then a = Mid(a, 3)
    txtsandwich.Value = a
    End Sub
     
    Private Sub cmdSandwich_Click()
    Dim NumLigneVide As Long
     
    With Worksheets("FACTURE")
        NumLigneVide = .Columns(1).Find("").Row
        With .Cells(NumLigneVide, 1)
            .Value = txtsandwich.Text
            .WrapText = True
        End With
    End With
    txtsandwich.Text = ""
    End Sub
    Ou pour l'amélioration éventuelle, regarder du côté des modules de classe pour gérer succinctement un ensemble de contrôles à la fois (ton cas).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Merci pour ton code effectivement il est plus léger mais il est moins efficace que celui que j'utilise car il ne permet pas une classification des ingrédients.

    Pour la fonction wraptext, ça renvoit effectivement à la ligne mais le texte qui va à la ligne n'est visible qu'en double cliquant sur mon text.

    Dans l'aide d'excel il dise :" Microsoft Excel modifie éventuellement la hauteur de ligne de la plage pour, le cas échéant, afficher le texte dans celle-ci"
    Dans mon cas il ne redimensionne pas.

    Sinon il est possible qu'a la place d'aller à la ligne dans la cellule du bas, il existe un code pour que ça aille à la ligne dans la meme cellule sans redimensionner mais en fusionnant automatiquement par exemple A16 et A17?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub cmdSandwich_Click()
    Dim NumLigneVide As Long
     
    With Worksheets("FACTURE")
        NumLigneVide = .Columns(1).Find("").Row
        With .Cells(NumLigneVide, 1)
            .Value = txtsandwich.Text
            .WrapText = True
            .EntireRow.AutoFit
        End With
    End With
    txtsandwich.Text = ""
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut
    Bonjour merci pour ton rajout mais ça ne marche toujours pas.
    Quand le texte est rentré dans ma texte box, je l'envoi dans ma cellule, est meme si il va a la ligne il reste caché.
    J'ai essyé en cochant multiligne dans les propriété de ma textbox ms evidemment ça ne change rien.
    Sinon pour contourner le probleme, est ce que je peux lui dire d'afficher le texte qui est sur la 1er ligne de ma textbox a la 1er ligne vide de mon tableau, puis quand ça va a la deuxieme ligne de ma texte box afficher dans la ligne suivante de mon tableau?
    PS : Quand je fusionne manuellement les lignes 16,17,18 ça m'affiche tout le texte dans la cellule.

    Sinon dans le workbook je ne peux pas mettre une commande qui dirait
    si le texte est trop long, fusionne avec cellule du bas automatiquement?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2012
    Messages : 161
    Par défaut Pas de réponse
    Personne n'a de réponse a ma question
    C'est pas grave je cherche je cherche et je crois que je tiens un truc :
    Pour accéder au ma frmsandwich je passe par une autre frm :frmMenuSandwich
    Dans cette frm j'ai un bouton cmdSandwich qui m'envoie à ma frmsandwich.
    J'ai donc taper le code dans ma frmMenuSandwich:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cmdsandwichgreen_Click()
     
    Dim NumLigneVide As Long
     
    With Worksheets("FACTURE")
        NumLigneVide = .Columns(1).Find("").Row
    .Range(.Cells(NumLigneVide, 1), .Cells(NumLigneVide + 1, 1)).Merge
    frmsandwich.Show
    End With
    End Sub
    Et ensuite dans frm sandwich j'ai inscrit le code que vous m'avez donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub cmdSandwich_Click()
    Dim NumLigneVide As Long
     
    With Worksheets("FACTURE")
        NumLigneVide = .Columns(1).Find("").Row
        With .Cells(NumLigneVide, 1)
            .Value = txtsandwich.Text
            .WrapText = True
            .EntireRow.AutoFit
        End With
    End With
    txtsandwich.Text = ""
    End Sub
    Dasn ce cas la vu que mes cellules étaient fusionné le texte s'affiche en entier sur 2 lignes. C'est un peu du bidouillage mais bon ça fonctionne.
    Je ne mets pas résolu car c'est une solution que j'espere provisoire, si vous avez des idées pour simplifier tout ça n'ésitez pas
    PS : merci Mercatog pour le premier code je me suis inspiré d'un code que tu avais donné a Thomasdu40 à propos de la fusion de 2 cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CheckBox1_Change()
    with sheets("Feuil1") 'à adapter
           .Range(.Cells(derlign, 17), .Cells(derlign - 1, 17)).Merge
    end with
    End Sub
    Donc un double merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/07/2009, 03h55
  2. Réponses: 6
    Dernier message: 21/03/2009, 16h29
  3. Souris désactivée quand elle est invisible
    Par tarzanjane dans le forum Flash
    Réponses: 2
    Dernier message: 05/06/2007, 11h13
  4. [JS] Recharger une page quand elle est réaffichée !
    Par beowax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/02/2007, 16h01
  5. pourquoi l'appli quitte quand elle est vide
    Par firejocker dans le forum MFC
    Réponses: 1
    Dernier message: 10/11/2005, 14h20

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