Completer un fichier Excel sans effacer son contenu depuis un formulaire

Bonjour à tous,

J'ai une nouvelle colle à vous poser.

Je voudrais via un formulaire completer un fichier excel contenant des informations.

Mon souci est que je ne peux compléter mon dossier en une seule fois .

Il m'arrive donc de fermer le fihier puis de revenit dessus.

Mon problème est que je viens de réaliser qu'à chaque nouvelle saisie, j'efface ma saisie précédente par écrasement.

Auriez-vous une idée pour y rémedier?

MERCI

Siga

22test.xlsm (63.24 Ko)

Bonjour,

En regardant le code de ton bouton valider ;

je ne comprend pas le pourquoi les 15 lignes : Workshesets("A") .cells(dernière_ligne ....

Alors que Dernière_ligne n'est pas encore définit. il faut déplacer ces 15 lignes après avoir définit à quoi est

égal derniere_ligne.

Merci de t'être penché sur le sujet Xmenpl

Je ne comprends pas ta remarque.

Je te rassure c'est dû à mon niveau de VBA = extrêmement faible .

En fait je pensais que ma dernière ligne était définie par cette partie du code

For i = 0 To 18
    If Worksheets("A").Cells(18 + i, 2).Value = "" Then
        derniere_ligne = i
        i = 100
    End If
 Next i 

Mais donc pour toi ce n'est pas le cas et c'est ce qui explique m'écrasement de mes saisies.

tant pis pour ma fierté mais selon moi si j'écris Dim derniere_ligne ..... et plus loin ce code alors je peux passer au moins 100 lignes à partir de ma ligne 18.

Suis dans l'erreur ?

Cordialement Siga

Re,

Dans ton fichier test il n'y que l'onglet Z

Difficile de voir n'analyse du décalage de ligne sur les autres onglets

Milles excuses @Xmenpl

Voici quelques explications.

Dans mon fichier, il ya certes l'onglet Z qui est apparent sur lequel figure le bouton qui permet d'ouvrir le formulaire.

Mais les données saisies dans le formulaire sont rappatriées dans des feuilles masquées A, B et C ,grâce au bouton Valider du formulaire. Sur le formulaire figure un multipage et chaque page( A, B et C) correspond à l'une des feuilles masquées (A, B et C).

Si je veux contrôler la saisie j'appuye sur le bouton exporter. Mes feuilles sont visibles au format PDF.

c'est là que se produit mon inconvénient quand j'ouvre mon formulaire et que je saisie de nouveau j'efface par écrasement ce j'avais saisi avant fermeture du formulaire.

Or ce que je veux c'est compléter à la suite ...est-ce que tu comprends ?

Siga

Bonsoir,

est-ce que parmi ceux qui ont téléchargé vous avez une idée ?

J'ai l'impression que celà a un rapport avec mon placement des For i.. Next i mais je n'ose pas trop les déplacer

Qu'en dîtes-vous ?

MERCI,

Siga

j'ai déplacé et supprimé mes "For I... "et "Next i ..."mais cela ne change rien .

Si j'examine la partie problématique de mon code , je me dis que

For i = 0 To 18
    If Worksheets("A").Cells(18 + i, 2).Value = "" Then
        derniere_ligne = i
        i = 100
    End If
 Next i

signifie que si sur la feuille A, la cellule de la ligne 18 en colonne 2 est vide alors i est la dernière ligne cad celle à compléter.

Quand je ferme mon formulaire et que je l'ouvre ensuite pour saisir le reste de mes données, rien ne précise que des données sont présentes sur ma feuille.

Je dois donc l'indiquer.

Pour cela je vais devoir faire reperer ma dernière ligne complétée pour que mes données à la suite de celles déja présentes.

pour reperer ma dernière ligne , j'ai vu sur le forum que je devais rechercher le numéro de ligne avec le code

Range("a65000").End(xlUp).Row

Je suppose aussi que je dois mettre un Else quelque part.

ce qui donne

For i = 0 To 18
    If Worksheets("A").Cells(18 + i, 2).Value = "" Then
        derniere_ligne = i
         i = 100
         Else
      derniere_ligne = Worksheets("A"). Range("i" & Rows.Count).End(xlUp).Row + 1   
    End If
 Next i

Est-ce cohérent pour vous ?

je souhaiterai le tester mais comme je joue d'une malchance extraordinaire mon éditeur vba s'estt complètment déglingué et je ne parviens plus à afficher mes fenêtre projets, code et propriétes si d'ailleurs vous avez une idée à ce sujet

merci

Siga

6test.xlsm (61.05 Ko)

Bonjour à tous,

Bonne nouvelle.

j'ai plus ou moins retrouvé mes fenêtres.: Je dois les remettre à chaque fois mais bon

le code fonctionne mais parfois le formulaire est mal complété .

Typiquement oubli du choix d'option .

d'où ma question: comment puis-je bloquer la validation du formulaire si le choix d'option n'est pas fait ?

merci d'avance

Siga

6test-2.xlsm (60.22 Ko)

Bonjour,

La détermination de la dernière ligne est, je pense, à revoir.

Avec ce code :

For i = 0 To 18
    If Worksheets("A").Cells(18 + i, 2).Value = "" Then
        derniere_ligne = i
        i = 100
    End If
 Next i

si jusqu' en ligne 36 on a déjà des données, on va sortir de la boucle sans initialiser derniere_ligne

L'instruction i=100 ne sert à rien puisque i n'est utilisé que dans des boucles (for next) où les valeurs de i sont définies.

Pour obtenir la première ligne où l'on va pouvoir écrire en colonne B, il vaut mieux utiliser :

derniere_ligne =  Worksheets("A").Range("B" & Rows.Count).End(xlUp).Row +1

Le code utilise une succession de boucle pour déterminer la dernière ligne en Feuille A, B et C, mais ... on stocke la valeur dans une variable derniere_ligne qui est la même pour toutes les boucles.

derniere_ligne ne contiendra donc que la valeur de la dernière boucle.

Il vaudrait mieux utiliser quelque chose comme :

DerLigA =  Worksheets("A").Range("B" & Rows.Count).End(xlUp).Row +1
DerLigB =  Worksheets("B").Range("B" & Rows.Count).End(xlUp).Row +1
DerLigC =  Worksheets("C").Range("B" & Rows.Count).End(xlUp).Row +1

A+

Bonsoir à tous,

MERCI @AlgoPlus Tu avais raison concernant la dernière ligne

ça fonctionne bien comme tu peux voir sur ce dernier fichier,

pas mal de correction en perspective aussi mais sans stress grâce à toi

je mets une dernière version du fichier épuré mais correct pour les membres

MERCI INFINIMENT @AlgoPlus

Siga

6test-5.xlsm (49.55 Ko)
Rechercher des sujets similaires à "completer fichier effacer contenu formulaire"