VBA 1 enr entête de long variable / n feuil

Fermé
nadine258 Messages postés 8 Date d'inscription dimanche 2 septembre 2012 Statut Membre Dernière intervention 23 septembre 2012 - 23 sept. 2012 à 11:29
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 - 24 sept. 2012 à 08:40
Bonjour,

Je traite plusieurs onglets qui ont un nombre de colonne différent. Mon soucis et de compter le nombre de col à chaque changement d'onglet pour ensuite contrôler l'enregistrement entête (nom des colonne). Le nom des colonnes et stocké sur un onglet de référence ou j'ai pour chaque onglet la description des colonnes et en grisé les colonnes que je ne dois pas traiter.
Mon soucis et de charger mon indice de tableau sur le nombre de colonnes que j'aurais sur mon onglet (pour le reste c'est bon).
Voyez que mon Selection.Cells.Count ne me retourne pas le nombre de colonne dans nCells.

For c = 1 To UBound(TabloC)
'Si DDL trouvée alors on traite
If WsC.Cells(c, 1) = Ntable Then
Cs = True
WsC.Activate
nCells = Selection.Cells.Count
Exit For
End If
Next c

Merci pour votre aide

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
23 sept. 2012 à 11:52
bonjour,

Selection tu le fais quand et où ?
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 23/09/2012 à 13:14
Bonjour à tous,

Pour le nombre de colonnes :
Selection.columns.Count

et pour le nombre de colonnes de Feuil1, si la ligne est remplie jusqu'au bout :
nbcol = Worksheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column

eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
23 sept. 2012 à 16:35
bonjour à tous

ou pour la dernière colonne utilisée dans la feuille (récupéré sur le forum)

DerCol = sheets(num_sheet).Cells.Find("*", , , , xlByColumns, xlPrevious).Column

bonne suite
0
nadine258 Messages postés 8 Date d'inscription dimanche 2 septembre 2012 Statut Membre Dernière intervention 23 septembre 2012
23 sept. 2012 à 21:22
Merci je vais pouvoir finir mon instruction.

Atout hasard si vous savez comment paramétrer la copie de 2 feuilles dans une même destinataire. Ma première feuille à un nombre de colonne variable j'utilise donc une variante pour décaler sur la droite mais il me demande un L1C1 ???

g_xlsfeuilleSource2.Activate
Cells.Select
Selection.Copy
'partie a revoir
g_xlsfeuilleDest.Activate
nbrColSourceN = nbrColSourceN + 1
Range("A1").Select
' ActiveCell.Offset(, columnOffset:=nbrColSourceN).Activate
ActiveSheet.Paste

Application.CutCopyMode = False

Bonne semaine.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
Modifié par ccm81 le 24/09/2012 à 08:47
bonjour

si j'ai compris ta demande

Public Sub CopieApresDerniereColonne()    
Dim lifin1 As Long, cofin1 As Long, plage As Range    
Dim cofin2 As Long, c As Object    
' coordonnées de la plage feuille 1 à copier   
lifin1 = Sheets(1).Cells.Find("*", , , , xlByRows, xlPrevious).Row    
cofin1 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column    
' première colonne vide feuille 2   
' un peu compliqué pour la 1° copie sur feuille 2 (encore) vide   
With Sheets(2).Cells    
  Set c = .Find("*", , , , xlByColumns, xlPrevious)    
End With    
If c Is Nothing Then    
  cofin2 = 1    
Else    
  cofin2 = c.Column + 1    
End If    
' copie de la plage sur feuille 2 après la dernière colonne utilisée   
Set plage = Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(lifin1, cofin1))    
plage.Copy Sheets(2).Cells(1, cofin2)    
End Sub

RQ. si lors de la 1° copie, la feuille 2 n'est pas vide, on peut faire plus simple (supprimer les test)

bonne suite
0