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 :

Créer une macro qui ajoute et remplit des lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut Créer une macro qui ajoute et remplit des lignes
    Bonjour à tous.
    J'aimerais réaliser un beau fichier excel ( pour du rangement ), et en gros ma difficulté ( étant 100% débutant ) est de réaliser la macro suivante :
    Appuyer sur un bouton sur la première feuille, qui m'ouvre une fenetre.
    Dans cette fenetre, j'aimerais entrer deux chaines de caractères et un nombre.
    Ensuite, j'aimerais que ça crée une nouvelle ligne dans la feuille deux, en mettant un numéro de ligne, puis que ça me mette mes 3 données dans cette ligne.
    J'ai quand même reussi à démarrer.


    Pour le début, j'ai crée un bouton qui m'ouvre trois fenetres ( même si je préfererai une seule avec les trois phrases ) et qui me les affiche dans ma feuille deux. J'ai fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub exemple()
        Dim var1 As String
        Dim var2 As String
        Dim var3 As Integer
     
        var1= InputBox("Entrez le nom de var1", "Nom var1")
        var2= InputBox("Entrez le nom de var2", "Nom var2")
        var3= InputBox("Entrez le nombre var3 ", "Nombre var3")
     
        Sheets("Feuil2").Cells(1, 1) = var1
        Sheets("Feuil2").Cells(1, 2) = var2
        Sheets("Feuil2").Cells(1, 3) = var3      
    End Sub
    Je sais que les trois dernieres lignes vont devoir être enlevée mais c'était juste pour un test.

    Je suis completement bloqué en revanche pour créer mes lignes dans ma feuille 2.
    Je pense en premier qu'il faudrait rechercher la premiere cellule non vide de la premiere colonne pour que la ligne soit créer à la suite des autres.
    Mais je n'ai pas la moindre idée de comment injecter mes variables dans mes nouvelles lignes.

    En trifouillant, j'ai reussi à créer la ligne et le numero mais je ne suis pas sur la deuxieme feuille et ce n'est pas du tout comme je suis censé faire j'imagine


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macroligne()
    ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 1).Range("A1:B1").Select
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "=R[-1]C+1"
    ActiveCell.Select
    End Sub
    J'imagine aussi que tout devra être regroupé dans la même macro ...

    Si il y a des âmes charitables pour me filer un petit coup de main
    Merci à tous.
    Gia

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    J'ai essayé un truc un peu plus simple.
    A toi de voir si ça peut t'aider.
    Bien entendu il faut adapter au moins le nom de la feuille et l'adresse des cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MandaDati()
    Dim uno As String, due As String, tre As Integer
    uno = Range("C1").Value
    due = Range("C2").Value
    tre = Range("c3").Value
    Sheets("FoglioDati").Select
    Cells(65536, 2).End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = uno
    ActiveCell.Offset(0, 1).Value = due
    ActiveCell.Offset(0, 2).Value = tre
    End Sub
    Ce code présuppose que tu entres les valeurs dans trois cellules de la feuille où tu te trouves et que ensuite tu lances la macro.
    La cellule controlée comme dernière remplie est sur la colonne B: Cells(65536, 2); si tu préfères la col A, change le 2 en 1.
    A bientôt,
    Luca

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut
    Merci beaucoup Luca

    A quel moment et comment je peux indiquer de créer une nouvelle ligne ?
    Et qu'a chaque fois que je clique sur le boutons et que j'entre mes valeurs, une nouvelle ligne est crée automatiquement en dessous ?

    [Edit]
    Ah non ça marche merci
    Mais a quelle moment la création de ligne se fait dans le code ??

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Et bien en fait il n'y a pas de création de ligne avec ce mécanisme, parce que tu écris simplement dans la première ligne libre en bas. Si tu voulais écrire en haut, alors oui, il aurait fallu en créer...
    A demain, si nécessaire.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut
    Tu veux dire qu'on ecrit dans la premiere ligne disponible ?
    J'ai deux autres questions :

    - Si je veux rajouter une mise en forme sur ma page ( sur mon tableau de valeurs en fait ), je peux le faire via vba ? si oui, a quelle ligne du code ?

    - Comment puis-je faire pour n'avoir qu'un seul Input avec mes trois questions ?

    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Quelqu'un m'a dit: "Con Excel puoi andare anche sulla Luna, se lo sai usare". (Avec Excel tu peux aller même sur la Lune, si tu sais l'utiliser).

    Oui, tu écris sur la première ligne disponible.

    1. La mise en forme, bien sûr, mais comment et pourquoi; orientativement, je dirais juste après les trois lignes qui valorisent les cellules de destination:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    '(...)
    ActiveCell.Value = uno
    ActiveCell.Offset(0, 1).Value = due
    ActiveCell.Offset(0, 2).Value = tre
    ' voilà, juste ici
    End Sub
    Mais...

    1a. si tu veux la même mise en forme partout il est plus simple de sélectionner la feuille et donner à l'avance une fois pour toute les formats voulus;

    1b. si tu veux une forme différente à chaque fois, c'est vachement difficile par VBA et je ne sais pas faire (ça voudra dire que sur la Lune j'irai une autre fois...).

    2. Je n'ai pas compris la question de l'input; la solution des cellules ne te convient pas? C'est peut-être mieux avec une UserForm? Mais là aussi je ne suis pas très fort et il vaut mieux se faire aider par quelqu'un d'autre du Forum.

    Ciao!

Discussions similaires

  1. créer une macro qui renvoie à une cellule vide
    Par cachou52fr dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 17/06/2011, 15h11
  2. [WD-2007] Créer une macro qui rempli des etiquettes automatiquement
    Par damienedme dans le forum VBA Word
    Réponses: 1
    Dernier message: 03/09/2009, 13h03
  3. Réponses: 2
    Dernier message: 09/09/2008, 13h11
  4. Créer une macro qui reproduit vers le bas
    Par Jimy6000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/01/2008, 11h43
  5. Réponses: 5
    Dernier message: 23/10/2007, 15h56

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