Macro pour descendre de ligne Excel

masterofp -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Voila, j'ai une macro pour mon document excel qui est:
Sub Ecris_en_dessous()

For i = 1 To 1
    Range("A14").End(xlUp).Offset(1, 0).Value = "=NOW() "
    Range("A14").End(xlUp).Offset(0, 1).Value = "Primextra Callisto - 25730 "
    Range("A14").End(xlUp).Offset(0, 2).Value = "=Q2 "
    Range("A14").End(xlUp).Offset(0, 3).Value = "3.75 L/Ha "
    Range("A14").End(xlUp).Offset(0, 4).Value = "Oui"
    Range("A14").End(xlUp).Offset(0, 5).Value = "=Q3"
    Range("A14").End(xlUp).Offset(0, 6).Value = "Sol "
    Range("A14").End(xlUp).Offset(0, 7).Value = "=NOW+3"
Next
End Sub

Elle fonctionne très bien. Le seul problème c'est que après 3 fois que je l'utilise, elle décale et écrit un peu partout sur la feuille.

Si vous pourriez m'aidé.
Merci

Phil

6 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    A la fin de ta dernière ligne tu devrais écrire
    Range("A14").End(xlUp).Offset(0, 7).Value = "=NOW()+3"

    mais tu pourrais écrire ton code
    Sub Ecris_en_dessous()
    For i = 1 To 1
    [A14].End(xlUp).Offset(1, 0).Value = "=NOW() "
    [A14].End(xlUp).Offset(0, 1).Value = "Primextra Callisto - 25730 "
    [A14].End(xlUp).Offset(0, 2).Value = "=Q2 "
    [A14].End(xlUp).Offset(0, 3).Value = "3.75 L/Ha "
    [A14].End(xlUp).Offset(0, 4).Value = "Oui"
    [A14].End(xlUp).Offset(0, 5).Value = "=Q3"
    [A14].End(xlUp).Offset(0, 6).Value = "Sol "
    [A14].End(xlUp).Offset(0, 7).Value = "=NOW()+3"
    Next
    End Sub

    Pour éviter la boucle For
    Sub test()
    [A14].End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = "=NOW() "
    ActiveCell.Offset(0, 1).Value = "Primextra Callisto - 25730 "
    ActiveCell.Offset(0, 2).Value = "=Q2 "
    ActiveCell.Offset(0, 3).Value = "3.75 L/Ha "
    ActiveCell.Offset(0, 4).Value = "Oui"
    ActiveCell.Offset(0, 5).Value = "=Q3"
    ActiveCell.Offset(0, 6).Value = "Sol "
    ActiveCell.Offset(0, 7).Value = "=NOW()+3"
    End Sub

    Par contre la recherche de ta première cellule vide d'après ton code commence à la cellule A14, si tu utilises le code plusieurs fois dès que la cellule A14 est renseignée le code ne fonctionne plus. Si tu souhaites que le code s'incrive au dessous de cette cellule fais commencer la recherche au bas de la colonne et remplace Range("A14") ou [A14] par Range("A65536") ou plus court [A65536]
    0
  2. masterofp
     
    Ok super sa marche.

    Mais la il y a un autre problème. Je veut que les donné entre dans la feuille à partir de A22. Et qu'il continue a descendre (Ex: A23, A24, A25, etc) Comment je fais.

    Merci

    Phil
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    En A21 tu ne dois rien avoir sinon le code s'arrêterait en A22.
    Sans rien à ton code il te suffit de simplement mettre en A21 un intervalle et le tour est joué ou en début de code ajouter |A21]=" "
    Autrement il est possible de modifier le code

    Sub test()

    [A21]= " "
    [A1000].End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = "=NOW() "
    ActiveCell.Offset(0, 1).Value = "Primextra Callisto - 25730 "
    ActiveCell.Offset(0, 2).Value = "=Q2 "
    ActiveCell.Offset(0, 3).Value = "3.75 L/Ha "
    ActiveCell.Offset(0, 4).Value = "Oui"
    ActiveCell.Offset(0, 5).Value = "=Q3"
    ActiveCell.Offset(0, 6).Value = "Sol "
    ActiveCell.Offset(0, 7).Value = "=NOW()+3"
    End Sub

    --
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  4. masterofp
     
    Salut
    Bien c'est sa le problème aussi. De la ligne A1 a A22, j'ai du text. A23 a A42 est libre et de A43 a A 50 il y a du texte. Mais moi je veux qu'il écrit dans la section libre. Comment Faire ?

    Merci de ton aide

    Phil
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Permettez moi de m'insérer dans votre sujet. Dans le cas ou A21 et A22 sont non vides, pour sélectionner la première ligne vide sous A22 :

      Range("A21").End(xlDown).Offset(1, 0).Select

      Range("A21").End(xlDown) 'sélectionne la dernière cellule "pleine" de la colonne A sous A21
      Offset(1, 0) 'prend en compte la cellule juste dessous et donc ..... la 1ère vide.

      EDIT : ça va bloquer en A43... Peut être qu'insérer des lignes serait judicieux...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. masterofp
     
    Ok merci

    Une autre question encore. Comme vous le voyer, dans la macro je prend des donnés des cellule Q2 et Q3. Ce que je voudrais etre capable de faire est le suivant.

    J'entre des donné dans Q2 et Q3, je clic sur mon bouton de macro et il entre les donné dans les cellule de la macro.
    Ensuite j'efface les cellule Q2 et Q3 et j'entre de nouvelle donné et je reclic sur le bouton de la macro et de nouvelle donné s'ajoute en dessous.

    Présentement, dès que j'efface met cellule Q2 et Q3, il s'éfface aussi dans les cellule que le macro les places.

    Comment faire?

    Merci

    Phil
    0
  7. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Remplacer :

    Range("A14").End(xlUp).Offset(0, 2).Value = "=Q2 "


    ce code inscrit en Cdernièreligne =Q2. Si Q2 = rien alors Cdernièreligne = rien

    par :

    Range("A14").End(xlUp).Offset(0, 2).Value = Range("Q2").Value


    ce code "copie" la valeur en Q2 et la "colle"en Cdernièreligne
    0