Autres Problème d'insertion de lignes en VBA

Papychou56

XLDnaute Nouveau
Bonjour à toutes et tous.
Papychou est bloqué..... pas grand'chose d'étonnant pour un débutant!!!
L'insertion automatique de ligne commandée par un UserForm ne se fait pas comme je le souhaite: j'arrive bien à effectuer cette insertion mais au lieu d'insérer les lignes à la suite l'une de l'autre, cela ne se fait que pour une ligne sur deux.
Par ailleurs, je n'arrive pas à conserver la virgule lors de la saisie du résultat du calcul dans la colonne "AE".
J'ai sûrement raté quelque chose, mais je ne trouve pas...
J'espère être assez clair mais je joins une copie de mon fichier.
Si quelqu’un a une idée, je la prends.
Merci à tous ceux qui nous consacrent beaucoup de leur temps.
 

Pièces jointes

  • Calcul hauteur d'eau disponible avec historique.xlsm
    122.8 KB · Affichages: 13

Dudu2

XLDnaute Barbatruc
Bonjour,
Je ne comprends pas cette instruction:
VB:
der_ligne = Cells(10, 1).End(xlUp)(2).Row + 1
Si c'est pour trouver la ligne suivant la dernière:
Code:
der_ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

D'autre part la colonne AE a un format Nombre avec 0 décimales.
Il faut le changer en Nombre avec 2 décimales.
 

Papychou56

XLDnaute Nouveau
Bonjour Dudu2.
J'ai bien essayé ton bout de code, mais ça ne fonctionne pas.
En fait, je souhaiterai que lorsque je termine le remplissage du UserForm, les données saisies soient entrée sur la ligne suivant une ligne déjà remplie, soit:
-1ère saisie: enregistrement sur la ligne numérotée 1.
-2ème saisie: enregistrement sur la ligne numérotée 2.
-3ème saisie: enregistrement sur la ligne numérotée 3.

alors que pour le moment, j'ai:
-1ère saisie: enregistrement sur la ligne numérotée 1.
-2ème saisie: enregistrement sur la ligne numérotée 3.
-3ème saisie: enregistrement sur la ligne numérotée 5.

Les lignes numérotées par un chiffre pair sont ignorées...

Où est-mon erreur? J'ai repris plusieurs fois le code sans résultat.

Par avance, merci.
 

Dudu2

XLDnaute Barbatruc
Je n'ai ps vu qu'au départ il n'y a rien en colonne 1. Donc il faut mettre:
VB:
der_ligne = Application.Max(3, ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1)

Et puis ces instructions ne me semblent pas cohérentes, je ne comprends pas ce que tu cherches à faire avec la ligne 4 ! A supprimer.
Code:
    Range(Cells(4, 1), Cells(4, 29)).Copy Range("A" & der_ligne)
    If der_ligne <> 4 Then
      Range(Cells(der_ligne, 1), Cells(der_ligne, 29)).ClearContents
    End If
 

Papychou56

XLDnaute Nouveau
Quel bêta! Je tournais en rond alors que j'avais la réponse sous les yeux:

le code modifié fonctionne:

der_ligne = Cells(10, 1).End(xlUp).Row + 1

au lieu de:

der_ligne = Cells(10, 1).End(xlUp)(2).Row + 1

Par ailleurs, la colonne "AE", le format nombre avec 2 décimales ne fonctionne pas...
 

Dudu2

XLDnaute Barbatruc
Par ailleurs, la colonne "AE", le format nombre avec 2 décimales ne fonctionne pas...
Sans titre 1.jpg
 

Dudu2

XLDnaute Barbatruc
der_ligne = Cells(10, 1).End(xlUp).Row + 1
Ça ne marchera pas au-delà de 10 lignes.
De plus c'est toujours la colonne 1 que tu regardes et tu auras le même problème avec ma recommandation initiale, car la colonne 1 est vide en ligne 2 et tu vas écraser ta ligne de titres de la ligne 2.
L'instruction correcte est:
VB:
der_ligne = Application.Max(3, ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1)
 

Papychou56

XLDnaute Nouveau
Bonjour Dudu2.
J'ai rectifié mon code suivant tes préconisations et, bien sur, ça fonctionne bien mieux qu'avec le code que j'avais trouvé....
L'incrémentation des lignes est nickel et fonctionne pour toutes les lignes et au-dela de 10 lignes.
Pour la valeur numérique, c'est parfait.
Un grand merci pour toi et ta disponibilité.
Le papy débutant que je suis a encore appris grâce à toi.
Bonne journée, le sujet est résolu.
 

Discussions similaires

Réponses
20
Affichages
361

Statistiques des forums

Discussions
311 732
Messages
2 081 997
Membres
101 861
dernier inscrit
Jerem28630