Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vincent noah

XLDnaute Junior
Bonjour à tous ,

je n'arrive pas à traduire en code Vba : sélectionner une plage de la colonne A jusqu'à la dernier cellule non vide et de la colonne B jusqu’à la derinere cellule non vide.

voici ceux que j'ai essayer :
Code:
Dim Plage As Range
Set Plage = Range(Cells("A1",[A65000].End(xlUp) Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2))
Mais ne fonctionne pas 🙁

Merci d'avance
 
Re : Petit coup de main

Chez moi, ça marche (tu as bien remplacé : ta feuille par le nom de ta feuille (à tout hasard)

Sub essai()
Set plage = Sheets("Feuil1").Range("a1:A" & Range("A65536").End(xlUp).Row)
For Each cel In plage
MsgBox (cel)
Next
End Sub
 
Re : Petit coup de main

Bonjour Chalet , Vincent ,

pour prendre en compte les 2 colonnes :

Sub sel()

Dim Fin1 As Long, g, Fin2 As Long
Fin1 = Range("A" & Rows.Count).End(xlUp).Row
Fin2 = Range("B" & Rows.Count).End(xlUp).Row
Range("A1:A" & Fin1 & ",B1:B" & Fin2).Select
End Sub
 
Re : Petit coup de main

Bonjour à tous,

ceci peut être ?

LastA = Range("A65000").End(xlUp).Row
LastB = Range("B65000").End(xlUp).Row
Set rng1 = Sheets("feuil1").Range("a1:a" & LastA)
Set rng2 = Sheets("feuil1").Range("b1:b" & LastB)
Debug.Print rng1.Address, rng2.Address 'voir sa sélection
 
Re : Petit coup de main

RE,

Oui ça marche por la colonne A Mais la difficulté c'est de sélectionner aussi la colonne B jusqu'à la dernier cellule non vide
Code:
Sub essai()
Dim plage As Range
Set plage = Sheets("Feuil1").Range("a1:A" & Range("A65536").End(xlUp).Row)
plage.Interior.ColorIndex = 23
End Sub

Merci
 
Re : Petit coup de main

Re ,

@ Bonjour Gosselien ,

Pourtant la solution du post 5 marche bien non ,

Allez , adapter à la mise en couleur .

Code:
Sub sel()

Dim Fin1 As Long, g, Fin2 As Long
Fin1 = Range("A" & Rows.Count).End(xlUp).Row
Fin2 = Range("B" & Rows.Count).End(xlUp).Row
Range("A1:A" & Fin1 & ",B1:B" & Fin2).Interior.ColorIndex = 23
End Sub
 
Dernière édition:
Re : Petit coup de main

Les 2 plages ne sont pas de même dimensions, alors perso, je le fais en plusieurs lignes..ça va vite tout de même 🙂

LastA = Range("A65000").End(xlUp).Row
LastB = Range("B65000").End(xlUp).Row
Set rng1 = Sheets("feuil1").Range("a1:a" & LastA)
Set rng2 = Sheets("feuil1").Range("b1:b" & LastB)
Debug.Print rng1.Address, rng2.Address
' mise en couleur
rng1.Interior.ColorIndex = 23
rng2.Interior.ColorIndex = 23
 
Re : Petit coup de main

perso, j'ai compris que tu voulais colorer les 2 zones malgré leur différence de nombre de cellules...

Patrick
ps: petite erreur de syntaxe "camarchepas" 🙂

Range("A1:A" & Fin1, "B1:B" & Fin2).Interior.ColorIndex = 23
et non
Range("A1:A" & Fin1 & ",B1:B" & Fin2).Interior.ColorIndex = 23
 
Re : Petit coup de main

Bonjour à tous

Une variante (en une seule ligne) 😉
Code:
Sub a()
Union(Range(Cells(1, 1), Cells(Rows.Count, 1).End(3)), Range(Cells(1, 2), Cells(Rows.Count, 2).End(3))).Interior.ColorIndex = 23
End Sub

Et au cas où il y aurait des formules dans les cellules, on paut aussi faire comme ceci:
Code:
Sub b()
With Columns("A:B")
Union(.SpecialCells(2, 23), Columns("A:B").SpecialCells(-4123, 23)).Interior.ColorIndex = 23
End With
End Sub
 
Dernière édition:
Re : Petit coup de main

RE, au passage quelqu'un à une idée de comment régler ce problème ???

je cherche à modifier un code qui est très long quand il y a beaucoup de cellule à traiter !

* je souhaite que chaque cellule tirée (bleu) ne soit plus prise en compte pour le tirage suivant .... jusqu’à ceux que la cible soit atteinte.

Code :
Code:
Sub Tirage()
Dim r As Range, cible, ncoul As Range, nc&, d As Object, c As Range
Set r = [A1:B20000] 'plage à adapter
cible = [D2] 'à adapter
Set ncoul = [E2] 'à adapter
r.Interior.ColorIndex = xlNone 'RAZ
ncoul = ""
If Application.CountIf(r, cible) = 0 Then _
  MsgBox "Valeur cible introuvable !", 48: Exit Sub
Application.ScreenUpdating = False
Randomize
nc = r.Count
Set d = CreateObject("Scripting.Dictionary")
Do
  Set c = r(Int(1 + Rnd * nc))
  If c <> "" And Not d.exists(c.Value) Then
    d(c.Value) = ""
    c.Interior.ColorIndex = 47 'bleu
  End If
Loop While c <> cible
c.Interior.ColorIndex = 3 'rouge
ncoul = d.Count
End Sub

MErciii D'avance
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
592
Réponses
3
Affichages
205
Réponses
4
Affichages
242
Réponses
4
Affichages
263
Retour