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 renvoie à une cellule vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut créer une macro qui renvoie à une cellule vide
    bonjour,
    je voudrais créer une macro dans un tableau Excel,
    qui renvoie à la premiere cellule vide de la colonne G,
    et apres avoir écrit dans cette cellule.
    En cliquant de nouveau sur le bouton, je voudrais etre renvoyé à la cellule vide suivante de la colonne G afin de remplir mes informations. et ainsi de suite, En sachant que certaines cellules de cette colonne, sont déja remplies

    comment faire, je n'y connais rien du tout.

    Merci

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    Dim NewLig As Long
     
    With Worksheets("Feuil1")
        NewLig = .Cells(.Rows.Count, "G").End(xlUp).Row + 1
        .Range("G" & NewLig).Value = "toto"
    End With
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Merci bien de répondre, mais cela ne fonctionne pas, ( "Toto", s'écrit dans la derniere ligne de la colonne G)
    Mon souhait, est de me renvoyer sur la premiere cellule vide de la colonne G dans X ligne, en sachant qu'il y a (exemple) 50 lignes complétée entierement (de 1 a 50) et que j'ai des lignes écrites en dessous mais sans la colonne G, qui sont vide et que je dois informer en fonction de mes données, alors pour éviter de chercher, je voudrais aller directement à la premiere cellule vide de G. ( dans ce cas c'est la cellule G51 que je voudrais le renvoie et la prochaine fois la G52 si celle-ci est vide, sinon la G53 et ainsi de suite)

    Mon bouton se trouve en fin de mes données à la lgne 850. a coté de mes résultats

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
    Dim NewLig As Long
     
    With Worksheets("Feuil1")
        NewLig = .Range("G1").End(xlDown).Row
        If NewLig = .Rows.Count Then NewLig = 1
        NewLig = NewLig + 1
        .Range("G" & NewLig).Value = "toto"
    End With
    End Sub

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    non, ça fonctionne pas ---
    avec cette formule, ça va écrire "toto" à la première cellule de G qui était déjà écrite (ligne 1) et je reste sur le bouton..., ce n'est pas encore ça., ah, je voudrais bien trouver cette macro.
    Je veux aller sur la 1ere cellule vide de G afin de la compléter..
    C'est peut etre pas vraiment possible ma demande !

    Merci quand meme mercatog de tes recherches.

  6. #6
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Désolé, mais je me permet de vous rappeler que ce que vous dites est tout sauf ce que fait le code.


    EDIT

    Mea Culpa, En effet et suite à la remarque ci-après, je viens de me rendre compte de l'erreur au cas où G1 est vide.

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour mercatog, Bonjour cachou52fr,

    Je pense que le dysfonctionnement constaté provient de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NewLig = .Range("G1").End(xlDown).Row
    dans le cas où la première ligne est vide.

    Cordialement.

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Re-bonjour mercatog,

    Merci quand même d’essayer de ton coté.

    Cordialement.

  9. #9
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Suite à la remarque de gFZT82, qui a raison, je propose une autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TEST2()
     
    Worksheets("Feuil1").Range("G:G").SpecialCells(xlCellTypeBlanks)(1, 1) = "Toto"
    End Sub

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je disais que le dernier code, écrit "toto" dans la ligne G1 apres avoir supprimmé ce que j'avais écris dans cette cellule, et non dans la 1 ere case vide de G comme je le voudrais, et mon pointeur reste sur le bouton en fin à ligne 850

    Aussi, excusez moi de mal m'exprimer, je suis un papi qui à commencer à tappoter sur excel en 2009.
    Merci de votre aide

    Javais trouvé ce code -

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub retour()
    ActiveSheet.Cells(Rows.Count, "G:G").End(xlUp)(2).Select
    End Sub
    Mais ce code me renvoie sur la derniere cellule vide de G, alors que je voudrais la premiere cellule vide de G qui peut etre a la ligne (exemple) 50 ou 52 ou n'importe quelle ligne, du moment que c'est la 1ere cellule vide de G

    Merci

  11. #11
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    As tu testé le code TEST2 de la réponse #9?

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonsoir,

    tiens un code un peu "bourrin" mais qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function ChercheVide(rPlage As Range) As Range
        Dim r As Range
        For Each r In rPlage
            If IsEmpty(r) Then
                Set ChercheVide = r
                Exit Function
            End If
        Next
        set r = Nothing ' renvoi Nothing si rien de vide dans la plage.
    End Function
    Pour l'appel (il faudrai ajouter le traitement du cas "Nothing")


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChercheVide(Feuil1.range("G:G")).Value  = " TOTO"

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    oui, j'ai testé le code du test2 et le probleme est le meme-
    "toto" a la place de mes données de la 1 ere ligne en G et pointeur resté sur le bouton

  14. #14
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu peux mettre un extrait de ton fichier en PJ. C'est bizarre.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    je ne comprend rien du dernier code, excusez moi.
    C'est pas le code qui est bourrin, c'est bien moi...

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben dans ce "dernier code" je t'ai mis une fonction ... et la manière de l'appeler, tu copie la fonction telle-quelle en dehors de tes procédure ...

    et tu rajoute l'appel dans le code de ton bouton .., pour enchainer avec le déplacement du curseur tu peu utiliser l'appel suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim r As Range
    Set r = ChercheVide(Feuil1.Range("G:G"))
    If r Is Nothing Then
      MsgBox "PLUS de cellule libre"
     Else
       r.Activate
       r.Value = "TOTO"
     
     End If

    PS : J'ai rajouté le "set" manquant sur la dernière ligne de la fonction

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    je m'excuses, je ne comprend pas ou je copie cette fonction

    Je ne suis qu'un débutant en excel et pour mes 71 ans, j'ai du mal a comprendre

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben tu met tout dans le même module ..


    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
    Sub MonTest
    Dim r As Range
    Set r = ChercheVide(Feuil1.Range("G:G"))
    If r Is Nothing Then
      MsgBox "PLUS de cellule libre"
     Else
       r.Activate
       r.Value = "TOTO"
     
     End If
    End sub
     
    Function ChercheVide(rPlage As Range) As Range
        Dim r As Range
        For Each r In rPlage
            If IsEmpty(r) Then
                Set ChercheVide = r
                Exit Function
            End If
        Next
        set r = Nothing ' renvoi Nothing si rien de vide dans la plage.
    End Function

  19. #19
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir à tous
    Je reviens avec ma proposition pour éviter une erreur avec SpecialCells(xlCellTypeBlanks)

    Le nom de la feuille à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CommandButton1_Click()
    Dim NewLig As Long
     
    With Sheets("Feuil11")
        NewLig = .Cells(.Rows.Count, "G").End(xlUp).Row + 1
        .Range("G" & NewLig) = Null
        .Range("G1:G" & NewLig).SpecialCells(xlCellTypeBlanks)(1).Value = "Toto"
    End With
    End Sub
    Reste à savoir comment tu teste ces codes par rapport à ton fichier.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    non, toujours pas le bon code
    Il me renvoie sur la cellule G1 en me supprimant mes écrits pour remplacer par "toto"

    ce code est bon mais me renvoie sur la derniere cellule vide de G a la place de la 1ere cellule vide de G que je voudrais


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub retour()
    ActiveSheet.Cells(Rows.Count, "G:G").End(xlUp)(2).Select
    End Sub
    je teste les code directement sur mon bouton du fichier dans modifier la macro

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2015, 13h34
  2. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  3. [MySQL] Resultat d'une requete qui renvoie un champ vide
    Par goldy91 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/01/2010, 14h59
  4. Macro qui renvoie une matrice
    Par stof dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/11/2008, 10h49
  5. macro qui crée une macro, est ce possible ?
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2007, 09h43

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