Bonjour, malgrès mes recherches, je ne trouve aucun code qui me permet de connaitre le nombre de colonnes utilisées sachant que les deux premières lignes de chaque colonnes sont toujours vide.
Merci de votre aide,
Bonne journée
Bonjour, malgrès mes recherches, je ne trouve aucun code qui me permet de connaitre le nombre de colonnes utilisées sachant que les deux premières lignes de chaque colonnes sont toujours vide.
Merci de votre aide,
Bonne journée
Pour chaque ligne tu testes le null de chaque colonne ?
En SQL c'est faisable avec rownum > 2 et tu testes chaque colonne.
Donne un peu plus d'infos pour qu'on puisse t'aider.
Cdt,
Code : Sélectionner tout - Visualiser dans une fenêtre à part UsedRange.Columns.Count
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
En fait j'ai un userform avec des cases à cocher dessus et j'aimerai que en fonction de ce qu'on a coché, mon programme copie les choses coché pour les coller dans une meme feuille je vous joint une partie de mon code:
Par exemple si le checkbox11 est coché, alors je vais coller sur la dernière colonne de la feuille Affichage des informations correspondant à l’élément checkbox11. Si le checbox2 est aussi coché alors je vais aussi copier ses informations sur la dernière colonne de ma feuille excel (donc normalment juste apres les informations collé du checkbox1). Mais le probleme c'est qu'il me colle tout sur la colonne 1 et donc par dessus les informations deja collé. Savez vous comment regler ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 If CheckBox11.Value = True Then NbCol = Worksheets("Affichage").UsedRange.Columns.Count ThisWorkbook.Worksheets("ClientCoverPrint").Range("A1:" & "B" & NbLigne).Copy Destination:=ThisWorkbook.Worksheets("Affichage").Cells(3, NbCol) Exit Sub End If If CheckBox2.Value = True Then NbCol = Worksheets("Affichage").UsedRange.Columns.Count ThisWorkbook.Worksheets("ClientCoverPrint").Range("C1:" & "C" & NbLigne).Copy Destination:=ThisWorkbook.Worksheets("Affichage").Cells(3, NbCol) End If
Merci
Bonjour,
En principe si la première ligne occupée est la troisième
Mais, car il y a toujours un mais, ce n'est pas un truc à toute épreuve. De cette façon, tu retrouves la première cellule vide. Et si elle se trouve avant la fin de ta ligne, tu es mal pris.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 dim LaDernièreColonne as integer 'Pour la dernière cellule occupée de la ligne 3 LaDernièreColonne = activesheet.Range("c1").End(xlToRight).column 'Pour la première cellule libre de la ligne 3 LaDernièreColonne = activesheet.Range("c1").End(xlToRight).column + 1
Si tu as sélectionné la dernière cellule de ta ligne(généralement, en VBA la sélection ne donne rien de plus, mais là, la sélection a un certain intérêt) et que tu n'as pas bougé ton curseur, tu peux travailler avec offset. (En fait on peut travailler avec Offset sans sélectionner; mais cela demande plus d'attention et de prudence au codage)
À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.
Ô Saint Excel, Grand Dieu de l'Inutile.
Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.
C1 c'est plutôt la première ligne de la troisième colonne !
Pour la dernière colonne de la ligne 3 (qui n'est pas forcement la dernière colonne utilisée, cf. la réponse de Menhir):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim LaDernièreColonne As Integer With ActiveSheet LaDernièreColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column End With
Cordialement,
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur
Bonjour …
Indépendamment d’un contexte précis, à tester dans la fenêtre des codes du formulaire :
Attention, cette proposition ne tient pas compte d'éventuelles cellules fusionnées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim P As Range Private Sub UserForm_Initialize() 'adapter le codename (pas le nom de l’onglet) de la feuille source :Feuil1, Feuil2 ... Set P = Feuil3.Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row) End Sub Private Sub CheckBox1_Click() If CheckBox1 Then P.Copy Cells(3, Columns.Count).End(xlToLeft)(1, 2) End Sub Private Sub CheckBox2_Click() If CheckBox2 Then P.Copy Cells(3, Columns.Count).End(xlToLeft)(1, 2) End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager