Détecter première ligne d'un tableau

gambi

XLDnaute Junior
Bonjour,

Je fais appel a vous car je suis un peu perdu.

j'ai un premier onglet dans lequel j'indique mes ventes. Une fois que la ligne est bien remplie, je clique sur le petit bouton bleu et les données s'exportent auto vers les autres onglets. (stock de la bonne collection et suivit des ventes avec graph).

La ou je bloque :

- Dans l'onglet "Stock - Designer collection" les données se copient au bon endroit car le tableau est vide. Mais normalement, dans les colonnes H, I et J, il y a des formules (comme dans l'onglet "Stock - Renovator coll")

Ce que je souhaite donc savoir, c'est comment faire pour qu'il détecte la première ligne de mon tableau en regardant par exemple dans la colonne A uniquement. Car comme vous pouvez le constater, elle se copient en dessous pour le moment car formule il y a en colonne H I et J.

J’espère avoir été suffisamment clair. Je reste a votre dispo si besoin de plus de détails.

Merci

Yoann
 

Pièces jointes

  • ETF Job Register (1).xlsm
    165.6 KB · Affichages: 455
G

Guest

Guest
Re : Détecter première ligne d'un tableau

Bonjour,

Avec ta méthode de recherche, remplacer .cells par .columns(1):
Code:
wsSheetStockSelected.Columns(1).Find("*", , , , xlByRows, xlPrevious)(2)

dans
Code:
Set LastcellStockSelected = wsSheetStockSelected.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
                    lastRowStockSelected = LastcellStockSelected.Row - 1
                    wsSheetStockSelected.Cells(lastRowStockSelected + 1, 1) = wsSheetSales.Cells(irowSales, 1) 'Client Name
Pourquoi ôter 1 à lastRowStockSelected pour lui rajouter 1 ensuite?

Pourquoi créer 'LastcellStockSelected' qui ne sert à rien utltérieurement?

Suggestion créer une variable NextRowStockSelected pour contenir le prochain n° de ligne libre directement:
Code:
NextRowStockSelected=wsSheetStockSelected.Columns(1).Find("*", , , , xlByRows, xlPrevious)(2).Row

Autre méthode possible si tu n'as rien sous le tableau
Code:
NextRowStockSelected=wsSheetStockSelected.Cells(rows.count,1).end(xlUp)(2).Row


Et Puisque tu es en excel 2013 tu peux utiliser les tableaux au sens excel Les tableaux dans Excel 2007

A+
 
Dernière modification par un modérateur:

gambi

XLDnaute Junior
Re : Détecter première ligne d'un tableau

Pardonne moi Hasco, j'ai des bases très limitées en VBA, je me suis débrouillé pour creer ce code avec plein d'exemple existant.
Donc disons que je suis arrivé a un résultat mais ce n'est pas sortis de ma tête a 100%.

J’espère que tu pourra prendre le temps de m'aider.

Merci beaucoup
 

Modeste geedee

XLDnaute Barbatruc
Re : Détecter première ligne d'un tableau

Bonsour®
une solution passe-partout, nommer la 1ere cellule du tableau :
ex :
VB:
Sub Macro1()
'****** l'attribution du nom est a faire au moins une fois
'****** le nom est à adapter selon la feuille utilisée
ActiveWorkbook.Names.Add Name:="Stock_DC", _
                            RefersToR1C1:="='Stock - Designer Collection'!R18C1"

'----exemple d'utilisation :
 With [Stock_DC].CurrentRegion
        MsgBox "Information tableau " _
                & Chr(10) & "N° ligne debut : " & .Row _
                & Chr(10) & "Nb lignes : " & .Rows.Count _
                & Chr(10) & "N° colonne debut : " & .Column _
                & Chr(10) & "Nb colonnes : " & .Columns.Count _
                & Chr(10) & "N° 1ére libre : " & .Row + .Rows.Count, _
        vbInformation, _
        [Stock_DC].Worksheet.Name
End With
Capture.JPG

autre solution nécessite EXCEL 2003 et +
utiliser les fonctionnalité de Tableaux
Ce lien n'existe plus
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    37.3 KB · Affichages: 63
  • Capture.JPG
    Capture.JPG
    37.3 KB · Affichages: 64
G

Guest

Guest
Re : Détecter première ligne d'un tableau

Re,

Le problème vient des cellules fusionnées, En A11:13, quand tu n'as rien en A14 la prochaine ligne vide pour VBA est la 12 même si elle est fusionnée à A11 et que A11 contient le titre de colonne.

Alors, soit tu défusionnes (les fusions posent toujours des problèmes) soit tu testes le numéro de ligne
Et tu enlèves les -1 et +1 inutiles.

Code:
 If Sh.Name = "Stock - " + wsSheetSales.Cells(irowSales, 4) + " Collection" Then
                    sheetFound = True
                    Dim wsSheetStockSelected As Worksheet
                    Set wsSheetStockSelected = Sh
                
                    Dim LastcellStockSelected As Range
                    Dim lastRowStockSelected As Long
                    Set LastcellStockSelected = wsSheetStockSelected.Columns(1).Find("*", , , , xlByRows, xlPrevious)(2)
                    lastRowStockSelected = IIF(LastcellStockSelected.Row<14,14,LastcellStockSelected)
                    wsSheetStockSelected.Cells(lastRowStockSelected, 1) = wsSheetSales.Cells(irowSales, 1)  'Client Name
                    wsSheetStockSelected.Cells(lastRowStockSelected, 2) = wsSheetSales.Cells(irowSales, 2)  'Job N°
                    wsSheetStockSelected.Cells(lastRowStockSelected, 3) = wsSheetSales.Cells(irowSales, 5)  'Colour
                    wsSheetStockSelected.Cells(lastRowStockSelected, 4) = wsSheetSales.Cells(irowSales, 3)  'Date
                    
                    
                End If

Et pour comprendre, fait des tests simples sur un fichier simple pour apprendre.

A+
 

gambi

XLDnaute Junior
Re : Détecter première ligne d'un tableau

Merci pour ton fichier,

Le fait de faire la boucle sur toutes les feuilles sert juste a distribuer dans ventes dans les onglets stocks correspondants.
Car la, les ventes se copient toutes dans la même collection alors que nous avons deux collections différentes vendues.
Ça a du sens ?
 
G

Guest

Guest
Re : Détecter première ligne d'un tableau

Re,

C'est ta boucle For irowSales = 2 To lastRowSales qui balaie les lignes de Sales, qui ira chercher la bonne feuille pour chaque ligne, pas besoin de refaire une boucle sur toutes les feuilles.

A propos des feuilles, tu as une faute dans le nom 'Stock - Hancrafted Collection' il manque le d au milieu de 'Handcrafted' pour qu'il corresponde à la liste 'Collections'.

A+
 
Dernière modification par un modérateur:

gambi

XLDnaute Junior
Re : Détecter première ligne d'un tableau

J'ai encore un petit soucis, je ne sais pas pourquoi il ne me copie pas les donnes dans l'onglet stock, pourtant le code ma parait bon.
J'ai utilisé le même pour copier les données dans les onglets graph et ça marche. Si vous pouvez m’éclairer ...

D'accord !! Merci en tous cas ! Est-il compliqué de n'ajouter que les ventes non exportées ? De sortes que si on clique sur le boutons, les ventes ne se copient pas 2 fois ?
 

Pièces jointes

  • ETF Job Register 1.0.xlsm
    147.1 KB · Affichages: 34
Dernière édition:

gambi

XLDnaute Junior
Re : Détecter première ligne d'un tableau

Bonjour a tous,
J'ai résolu mon problème ci-dessus comme un grand !!
Mais je bloque toujours sur ma checkbox.
Le truc c'est que je ne sais pas si c'est possible de faire apparaître une checkbox automatiquement quand je renseigne une ligne dans sales et que je l'exporte avec le bouton.
Et cette checkbox, une fois apparue, peut-elle colorer la ligne en vert quand active ?

Merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz