Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA Excel : sélection d'une plage variable

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 !

MagaliCLC

XLDnaute Nouveau
Bonsoir,

Je recherche une formule pour me permettre de sélectionner une plage de cellule sur VBA.
Je voudrais sélectionner les cases en colonne B dès lors que les cases en colonne A contiennent une valeur.

Exemple :
Soit un tableau sur la plage A1 à B10.
Les cases A1, A2 et A3 contiennent une valeur.
Comment indiquer sur VBA qui faut sélectionner la plage B1:B3 ?

Merci bcp

Magali
 
Solution
Re,

Selon votre exemple ET seulement si les valeurs de la colonne A ne peuvent être que des nombres:
VB:
Sub selectionner()
Dim xrg As Range
   On Error Resume Next
   Set xrg = Range("a:a").SpecialCells(xlCellTypeFormulas, xlNumbers)
   If xrg Is Nothing Then Range("a1").Select Else xrg.Offset(, 1).Select
End Sub
Bonsoir Claudia,
Merci mais les cellules vides sont variables.
je recherche donc une formule qui puisse rechercher les cellules compléter en colonne A, afin de sélectionner les cases correspondantes en colonne B.

Merci !
 
Bonsoir @MagaliCLC , Claudy 🙂,

Testez la macro suivante:
VB:
Sub selectionner()
Dim xrg1 As Range, xrg2 As Range, xrg As Range
   On Error Resume Next
   Set xrg1 = Range("a:a").SpecialCells(xlCellTypeConstants)
   Set xrg2 = Range("a:a").SpecialCells(xlCellTypeFormulas)
   If xrg1 Is Nothing Then
      Set xrg = xrg2
   ElseIf xrg2 Is Nothing Then
      Set xrg = xrg1
   Else
      Set xrg = Union(xrg1, xrg2)
   End If
  If xrg Is Nothing Then Range("a1").Select Else xrg.Offset(, 1).Select
End Sub
 
Re,

Selon votre exemple ET seulement si les valeurs de la colonne A ne peuvent être que des nombres:
VB:
Sub selectionner()
Dim xrg As Range
   On Error Resume Next
   Set xrg = Range("a:a").SpecialCells(xlCellTypeFormulas, xlNumbers)
   If xrg Is Nothing Then Range("a1").Select Else xrg.Offset(, 1).Select
End Sub
 
Re @MagaliCLC,

Le cas le plus général: Les valeurs de la colonne A peuvent être du texte ou des nombres voire des valeurs d'erreurs.

Le code:
VB:
Sub selectionnerBIS()
Const InclureErreur = False   'False alors on inclut les cellules avec valeur d'erreur de la colonne A
                              'True alors on exclut les cellules avec valeur d'erreur de la colonne A
Dim t, i&, derlig&, PremColVide&
Dim xrg1 As Range, xrg2 As Range, xrg As Range
 
   On Error Resume Next
   Application.ScreenUpdating = False
   derlig = Cells(Rows.Count, "a").End(xlUp).Row
   PremColVide = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count
   t = Range("a2:a" & derlig)
   For i = 1 To UBound(t)
      If IsError(t(i, 1)) Then
         If Not InclureErreur Then t(i, 1) = Empty
      Else
         t(i, 1) = IIf(t(i, 1) <> "", CVErr(xlErrNA), "")
      End If
   Next i
   Cells(2, PremColVide).Resize(UBound(t)) = t
   Set xrg = Cells(2, PremColVide).Resize(UBound(t)).SpecialCells(xlCellTypeConstants, xlErrors)
   If Not xrg Is Nothing Then xrg.Offset(, -PremColVide + 2).Select Else xrg.Offset(, 1).Select
   Columns(PremColVide).Delete
End Sub
 

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

Réponses
10
Affichages
266
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…