Insertion de ligne en VBA dans un tableau excel

Triad30

XLDnaute Nouveau
Bonjour à tous,

Voila je vous expose mon problème, j'ai 3 fichiers excel, un dans lequel il y a un tableau vide qui attend d'être rempli grâce aux 2 autres fichiers, et 2 fichiers quelconque qui on aussi la forme de tableau...

J'ai 2 problèmes :
- Enfin bref je suis débutant en VBA, grâce à ce forum j'ai réussi a insérer dans le tableau une ligne complète, mais cependant j'ai un souci car le tableau doit accueillir une centaine de ligne et le problème est que je ne connais pas l'instruction qui permet d'insérer des données dans une ligne vide à la suite d'une ligne déjà rempli...
- Ensuite j'aimerais savoir si il est possible de récupérer les partiellement les données d'une cellule, si une cellule contient "papa noël", est ce que je pourrai récupérer dans cette cellule uniquement "papa" ?

J'espère que j'ai était claire sinon demander moi si vous n'avez pas bien compris
Merci d'avance pour votre aide.
 

Ubot303

XLDnaute Occasionnel
Re : Insertion de ligne en VBA dans un tableau excel

Bonjour à toi,

En tant que débutant, ce forum ainsi que l'enregistreur de macro te seront d'une précieuse aide... Connais-tu le 2ème?
Il te donnera toutes les instructions/syntaxe de ce que tu auras fait à l'écran : tu as un bouton enregistrer qui débute l'analyse de toutes tes actions sous Excel et tu as un bouton "relecture" pour répéter à l'identique ce que tu as fait. Tu as également accès au code que tes actions auront généré.

Pour le deuxième point, c'est possible et pas forcément par macro.
Un = gauche("Papa Noël";4) te ramenera "Papa" ou un gauche(A1;4) avec "Papa Noël" écrit en A1...

Du coup, je me demande si tu souhaites absolument passer par une macro pour effectuer ta copie (si j'ai bien compris) d'un classeur vers un autre...
 

Triad30

XLDnaute Nouveau
Re : Insertion de ligne en VBA dans un tableau excel

Merci pour ta réponse Ubot303 mais je n'arrive toujours pas à récupérer qu'une partie de la cellule.
Je vais etre un peu plus précis,
J'ai dans un classeur3 dans la cellule C2 qui contient une date tel que cela : "2010-05-31 05:00:00 --- 2010-06-01 05:00:00" mais moi je voudrais retenir de ce champs uniquement "2010-05-31" afin de le coller dans une cellule AX de mon classeur1 ?
J'ai essayé la manip que vous m'avez donnée, j'ai fait dateprod = Left(c2, 10)
Mais la variable dateprod ne reçoit rien. Est ce normal ?
 

Triad30

XLDnaute Nouveau
Re : Insertion de ligne en VBA dans un tableau excel

Je vais être un peu plus précis en ce qui concerne le deuxième point,
J'ai une classeur3 dans le lequel la cellule C2 contient chaine tel que : "2010-05-31 05:00:00 --- 2010-06-01 05:00:00" je voudrais récupérer de cette chaine uniquement "2010-05-31" pour cela je viens d'essayer votre technique en faisant :
Workboos("classeur3.xls").sheets("feuill 1").activate
dateprod = Left(c2, 10)
Mais dateprod ne reçoit rien.
Est ce normal ?
 

Triad30

XLDnaute Nouveau
Re : Insertion de ligne en VBA dans un tableau excel

Je vais être un peu plus précis en ce qui concerne le deuxième point,
J'ai une classeur3 dans le lequel la cellule C2 contient chaine tel que : "2010-05-31 05:00:00 --- 2010-06-01 05:00:00" je voudrais récupérer de cette chaine uniquement "2010-05-31" pour cela je viens d'essayer votre technique en faisant :
Workboos("classeur3.xls").sheets("feuill 1").activate
dateprod = Left(c2, 10)
Mais dateprod ne reçoit rien.
Est ce normal ?
 

Ubot303

XLDnaute Occasionnel
Re : Insertion de ligne en VBA dans un tableau excel

Attention "Papa Noël" est une chaine de caractère... on peut récupérer une partie en faisant = droite ou = gauche (ou un mix des deux pour avoir des caractères au milieu de la chaîne)

Pour les dates, cela est différent... Si tu passes ta cellule en format "normal" et non pas en format "date" tu t'apercevras qu'il s'agit en réalité de chiffres...

Néanmoins, Excel est doté de formules comme =jour() =mois() =année()
Et de =date(année;mois;jour) pour remettre une date

Exemple : "2010-05-31 05:00:00" en A1

=DATE(ANNEE(A1);MOIS(A1);JOUR(A1)) permet d'avoir ce que tu demandes :)
 

Triad30

XLDnaute Nouveau
Re : Insertion de ligne en VBA dans un tableau excel

Bonjour,

Je vous dérange encore une fois parce que je rame au niveau de mon premier souci... Je n'arrive pas à insérer quelque chose a la dernière ligne de mon tableau sans avoir à donner le numéro de ligne.

Petite explication :
A l'heure actuelle j'ai insérer uniquement une ligne dans mon tableau mais pour cela j'ai du préciser le numéro de la ligne dans laquelle je voulais insérer. Et je voudrais que par exemple à la place du numéro de ligne que j'informe, savoir si il est possible d'y mettre une variable qui désignerait la dernière ligne à utiliser.
Petit détail : dans les lignes que j'ai insérés les cellules ne se succèdes pas forcément les unes après les autres de colonnes en colonnes.

Je vous donne mon code :

Sub SuiviEquipe()
Dim dest0, dest1, dest2, dest3, dest4, dest5, dest6, dest7, dest8, dest9, dest10, dest11, dest12, dest13, dest14, dest15, dest16 As Range, C As Range
Dim ligne As Range
Dim dateprod As Range
Dim ligneutilisable As Integer
Dim tpsouverturel32 As Range
Dim qteFDL As Range
Dim derniereligne As Integer

'C'est le classeur et la feuille sur lesquelles on va coller les données
With Workbooks("TravailPourVandieres.xls").Sheets("Feuille de Saisies")

'Il faudrait que la ligne à utiliser soit trouvé toute seul
Set dest0 = .Cells(7, 9)
Set dest1 = .Cells(7, 10)
Set dest2 = .Cells(7, 11)
Set dest3 = .Cells(7, 12)
Set dest4 = .Cells(7, 13)
Set dest5 = .Cells(7, 14)
Set dest6 = .Cells(7, 15)
Set dest7 = .Cells(7, 16)
Set dest8 = .Cells(7, 17)
Set dest9 = .Cells(7, 18)
Set dest10 = .Cells(7, 19)
Set dest11 = .Cells(7, 20)
Set dest12 = .Cells(7, 21)
Set dest13 = .Cells(7, 22)
Set dest14 = .Cells(7, 23)
Set dest15 = .Cells(7, 24)
Set dest16 = .Cells(7, 25)
Set ligne = .Cells(7, 4)
Set dateprod = .Cells(7, 1)
Set qteFDL = .Cells(7, 6)
Set tpsouverturel32 = .Cells(7, 26)

'C'est le classeur et la feuille dans lesquelles on va copier les données
Workbooks("Exemple de rapport de perfs.xls").Sheets("Prologen Data Export").Activate

[E11].Copy dest0
[E13].Copy dest1
[E27].Copy dest2
[E37].Copy dest3
[E43].Copy dest4
[E48].Copy dest5
[E56].Copy dest6
[E66].Copy dest7
[E76].Copy dest8
[E85].Copy dest9
[E90].Copy dest10
[E93].Copy dest11
[E99].Copy dest12
[E102].Copy dest13
[E112].Copy dest14
[E113].Copy dest15
[E114].Copy dest16
[E4].Copy ligne
ligne = Replace(Right(Range("E4").Value, 4), "-", "")
[C2].Copy dateprod
dateprod = Replace(Left(Range("C2").Value, 10), "-", "/")
[H6].Copy qteFDL
[E8].Copy tpsouverturel32

End With
End Sub

Qu'en pensez vous ?
 

Pierrot93

XLDnaute Barbatruc
Re : Insertion de ligne en VBA dans un tableau excel

Bonjour,

pas tout compris sur ce que tu voulais faire...

pour la dernière cellule renseignée de la colonne A :

Code:
Range("A65536").End(xlUp).Select

pour aller sur celle d'en dessous :

Code:
Range("A65536").End(xlUp)(2).Select


bonne journée
 

Triad30

XLDnaute Nouveau
Re : Insertion de ligne en VBA dans un tableau excel

Merci pierrot mais j'ai due mal m'exprimer, je reformule.
En faite je voudrais pouvoir récupérer le numéro de la dernière ligne, par exemple si la dernière cellule de la colonne A non utilisée est A50, alors je voudrais pouvoir récupérer le numéro 50 dans une variable.

En espérant que en faisant :
- Set dest0 = .Cells(&mavariable&, 9)
Cela reviendrais à faire (?) :
- Set dest0 = .Cells(50, 9)

Est ce possible ?
 

Discussions similaires

Réponses
7
Affichages
280

Statistiques des forums

Discussions
312 030
Messages
2 084 781
Membres
102 665
dernier inscrit
Distri