Macro pour descendre de ligne Excel

Fermé
masterofp - 1 janv. 2010 à 20:29
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 janv. 2010 à 14:59
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

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
1 janv. 2010 à 21:46
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
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
6 janv. 2010 à 13:12
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 janv. 2010 à 14:22
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
6 janv. 2010 à 14:59
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