[Résolu]Copier sur première ligne vide.

Neo37

XLDnaute Junior
Bonjour,

Je sais que cette question a souvent été posé sur pleins de Forum, ainsi que celui ci, mais comme chaque cas est un peu particulier, et mes compétences n'étant pas bien haute sur VBA, je n'arrive pas faire le tri dans les solutions données, qui ne sont pas toujours les mêmes.

J'ai un "Tableau 1" sur la Feuil1, qui est rempli à la main par les utilisateurs, et un bouton qui reporterait toutes les valeurs (seulement les lignes renseignées) dans un "Tableau 2" sur le Feuil2. Jusque là je saurait faire.
Là ou je ne sais plus faire, c'est quand toutes les valeurs sont remplacées par d'autres, et que l'on fait un nouvel envoi. Je voudrais que les nouvelles valeurs s'ajoutent à la suite des anciennes, à partir de la première case vide à partir de B8.

Voir pièce jointe.

Merci à ceux qui s'y intéresseront.
 

Pièces jointes

  • Test copiage.xls
    27.5 KB · Affichages: 50
  • Test copiage.xls
    27.5 KB · Affichages: 51
  • Test copiage.xls
    27.5 KB · Affichages: 53
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Copier sur première ligne vide.

Bonjour Néo,

J'ai un "Tableau 1" sur la Feuil1, qui est rempli à la main par les utilisateurs, et un bouton qui reporterait toutes les valeurs (seulement les lignes renseignées) dans un "Tableau 2" sur le Feuil2. Jusque là je saurait faire.

Montre nous ce que tu sais faire, car ton fichier n'a pas de macro. Nous pouvons d'aiguiller....

A+

Martial
 

Neo37

XLDnaute Junior
Re : Copier sur première ligne vide.

Merci nicopec, ton principe fonctionne très bien.

J'ai essayé de l'adapter pour pouvoir mettre les données 1 2 et 3 dans les bonnes colonnes de valeur 1 2 et 3, mais apparemment j'ai pas compris toute la subtilité de la chose...
Tout ce que je teste est un échec, ça bug à chaque fois.
Comme je suis plutôt du style à utiliser des trucs comme:

Worksheets("Feuil2").Range("B8").Value = Worksheets("Feuil1").Range("B5").Value

Du coup les positionnements par coordonnées, je ne maitrise pas du tout :p

Là je fatigue un peu, je m'y remettrais demain.
 

Sheldor

XLDnaute Occasionnel
Supporter XLD
Re : Copier sur première ligne vide.

si les colonnes 2/3/5 vont en 2/4/6 alors
For i = 5 To 9
If Cells(i, 2) <> "" Then
r = Sheets("Feuil2").Range("B65536").End(xlUp).Row + 1
Sheets("Feuil2").Cells(r, 2) = Cells(i, 2)
Sheets("Feuil2").Cells(r, 4) = Cells(i, 3)
Sheets("Feuil2").Cells(r, 6) = Cells(i, 5)
End If
Next i

mais il faut peut être revoir l'ergonomie pour l'utilisateur
amicalement
 

Neo37

XLDnaute Junior
Re : Copier sur première ligne vide.

C'est dingue comme une fois écrit ça semble simple :)
Merci nicopec.

Un dernier soucis :rolleyes: ça marche très bien pour le fichier Test, mais quand je veux l'appliquer à mon fichier, ça bug de suite, ça me met "Erreur de compilation: Projet ou bibliothèque introuvable", en pointant le "i" de For i = 11 To 23 pour mon cas.
J'ai cru que ce qu'il le gêné c'était que j'avais réutilisé un bouton qui renvoyait à une Macro, donc dans un Module sous VBA.
Donc j'ai créé un autre bouton, et j'ai bien mis la formule dans l'objet Feuil1, mais pas mieux.
Je ne pense pas avoir la valeur "i" dans une autre partie du fichier...
Comme mon fichier est plein de listes, de formules de recherche et autre boutons liés à des macros, cela peut-il en être la cause??
A savoir que [If Cells(i, 2) <> "" Then], ça désigne des cellules qui sont des données listes en fait, encore une cause possible?
 

Neo37

XLDnaute Junior
Re : Copier sur première ligne vide.

ça ne change rien.
Bon de toute façon, la réponse à ma question a été donné, merci encore à toi nicopec.
Je vais mettre ce post en résolu. Et au pire je vais recommencer mon fichier de zéro, je verrai bien si ça recoince d'où ça vient.

Merci encore :D
 

Neo37

XLDnaute Junior
Re : [Résolu]Copier sur première ligne vide.

:confused: ok Martial... là j'avoue, je comprend l'esprit mais je ne sais pas si jvais arriver à le mettre en forme. Je vais essayer :)
Mais comment est-il possible que j'ai pu désactiver mes variables sans m'en rendre compte?
 

Yaloo

XLDnaute Barbatruc
Re : [Résolu]Copier sur première ligne vide.

Re,

Je ne pense pas que tu aies pu "désactiver" tes variables.

C'est sûrement que dans ton fichier exemple, tu n'as pas cette ligne Option Explicit tout en haut de ton module, alors qu'elle doit être présente dans le module de ton fichier définitif.

Le mieux est toujours de déclarer ses variables (même si tu n'as pas Option Explicit), car la procédure ne cherche pas quel est le type de la variable, cela évite également, par exemple, de confondre des Long (valeur numérique) avec des String (valeur texte).

De plus, comme ça ne cherche pas le type, ça va plus vite, quand il y a beaucoup de données, c'est appréciable.

Donc le mieux est de commencer ses macros par :

VB:
Option Explicit

Sub Macro1()
Dim i& 'Long = numérique
Dim Mail$ 'String = texte
'.... suite de la macro

A+

Martial
 

Neo37

XLDnaute Junior
Re : [Résolu]Copier sur première ligne vide.

Merci Martial, en effet ça corrige bien le bug.

Chose étrange les valeurs ne veulent pas se copier dans mon tableau.
Si je crée une nouvelle feuille vierge de réception pour les valeurs, et que je l'applique à celle ci ça fonctionne.
Dans le tableau désiré, il y a plein de formules de recherches, des mises en formes conditionnelles, mais pas là où les valeurs doivent se copier, donc je ne comprend pas.
Qu'est-ce qu'il est susceptible Excel...

J'irai à taton pour voir ce qui le gêne.
 

Neo37

XLDnaute Junior
Re : [Résolu]Copier sur première ligne vide.

Voilà le code:

Private Sub Envoi_Click()
Dim i&
Dim r&
Dim Mail&

For i = 11 To 23
If Cells(i, 2) <> "" Then
r = Sheets("ROP").Range("B65536").End(xlUp).Row + 1
Sheets("ROP").Cells(r, 2) = Cells(i, 2)
Sheets("ROP").Cells(r, 12) = Cells(i, 4)
Sheets("ROP").Cells(r, 13) = Cells(i, 5)
Sheets("ROP").Cells(r, 14) = Cells(i, 6)
Sheets("ROP").Cells(r, 15) = Cells(i, 7)
Sheets("ROP").Cells(r, 16) = Cells(i, 8)
Sheets("ROP").Cells(r, 17) = Cells(i, 9)
Sheets("ROP").Cells(r, 18) = Cells(i, 10)
Sheets("ROP").Cells(r, 19) = Cells(i, 11)
End If
Next i

End Sub


Rien ne se passe, enfin le bouton semble bien réfléchir, mais aucun résultat dans ma feuille "ROP".
Si j'insère une nouvelle feuille "Feuil1", que je remplace donc les "ROP" par des "Feuil1", ça fonctionne...
nicopec le "on error resume next", tu veux dire si c'est présent dans le code du bouton ou de manière général dans tout le fichier?? Je pense que tu voulais me dire juste dans le code du bouton, mais dans le doute je préfère poser la question :p
 

Discussions similaires

Réponses
4
Affichages
201
Réponses
7
Affichages
286

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400