VBA Excel - sélection plages
Résolu
sygmajf99
Messages postés
18
Statut
Membre
-
sygmajf99 Messages postés 18 Statut Membre -
sygmajf99 Messages postés 18 Statut Membre -
Bonjour,
J'aimerais sélectionner (pour la copie), 2 plages de cellules, où chaque plage n'est pas nécessairement collée sur l'autre. Je voudrais joindre les 2 "range" suivants. Quel est la meilleure méthode (j'ai essayé par un loop, mais c'est trop long).
Range(Cells(4, 1), Cells(ligne, 3)).Select
Range(Cells(4, a), Cells(ligne, b)).Select
Voici mon code en entier au cas où..
Sub Impression_Multi()
Dim a As Integer
Dim b As Integer
choix1 = Sheets("Impression").Cells(1, 1).Value
choix2 = Sheets("Impression").Cells(2, 1).Value
ligne = Sheets("Rép-Questions COM").Range("a4").End(xlDown).Row
a = choix1 + 4
b = choix2 + 4
Range(Cells(4, 1), Cells(ligne, 3)).Select
Range(Cells(4, a), Cells(ligne, b)).Select
End Sub
MERCI !!!!!!!!!!!!
J'aimerais sélectionner (pour la copie), 2 plages de cellules, où chaque plage n'est pas nécessairement collée sur l'autre. Je voudrais joindre les 2 "range" suivants. Quel est la meilleure méthode (j'ai essayé par un loop, mais c'est trop long).
Range(Cells(4, 1), Cells(ligne, 3)).Select
Range(Cells(4, a), Cells(ligne, b)).Select
Voici mon code en entier au cas où..
Sub Impression_Multi()
Dim a As Integer
Dim b As Integer
choix1 = Sheets("Impression").Cells(1, 1).Value
choix2 = Sheets("Impression").Cells(2, 1).Value
ligne = Sheets("Rép-Questions COM").Range("a4").End(xlDown).Row
a = choix1 + 4
b = choix2 + 4
Range(Cells(4, 1), Cells(ligne, 3)).Select
Range(Cells(4, a), Cells(ligne, b)).Select
End Sub
MERCI !!!!!!!!!!!!
A voir également:
- VBA Excel - sélection plages
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Salut le forum
Regarde si cela pourrait te faire avancer
Référence : Silkyroad Developpez.Com
Mytå
Regarde si cela pourrait te faire avancer
Function CreationTableau(ParamArray Cellules1()) As Variant
'Adapté de:
'http://support.microsoft.com/?kbid=213403
'
Dim VarTab() As Variant
Dim Temp As Variant
Dim i As Integer
Dim w As Integer, X As Integer, y As Integer, z As Integer
i = 1
'Boucle sur les éléments du tableau de paramètres.
For X = 0 To UBound(Cellules1)
If TypeName(Cellules1(X)) = "Range" Then
Set Temp = Cellules1(X)
'Vérifie si le paramètre passé à la fonction est une cellule simple
'ou une plage.
If IsArray(Temp) Then
'Intègre chaque cellule de la plage dansle tableau.
For y = 1 To UBound(Temp.Value)
For z = 1 To UBound(Temp.Value, 2)
'Permet de filtrer les cellules vides.
'If Not IsEmpty(Temp(y, z).Value) Then
ReDim Preserve VarTab(1 To i)
VarTab(i) = Temp(y, z).Value
i = i + 1
'End If
Next z
Next y
Else
'Permet de filtrer les cellules vides.
'If Not IsEmpty(Temp) Then
'Intègre la cellule dans le tableau.
ReDim Preserve VarTab(1 To i)
VarTab(i) = Temp
i = i + 1
'End If
End If
Else
ReDim Preserve VarTab(1 To i)
VarTab(i) = Cellules1(X)
i = i + 1
End If
Next X
CreationTableau = VarTab
End Function
Sub Test()
Dim Tb As Variant, xTab As Variant
Tb = CreationTableau(Range("A1:A10"), Range("C1:C10"), Range("E1"), 80)
'--- Vérifie si le tableau est vide ---
On Error Resume Next
'xTab va prendre la valeur Empty si le tableau est vide.
xTab = UBound(Tb)
On Error GoTo 0
'Renvoie le nombre d'éléments du tableau
If Not IsEmpty(xTab) Then MsgBox UBound(Tb)
End Sub
Référence : Silkyroad Developpez.Com
Mytå
Bonjour sygmajf99
Je peux te proposer :
Sub Impression_Multi()
Dim a As Integer
Dim b As Integer
Dim s as String
Dim col1, col2 as String
choix1 = Sheets("Impression").Cells(1, 1).Value
choix2 = Sheets("Impression").Cells(2, 1).Value
ligne = Sheets("Rép-Questions COM").Range("a4").End(xlDown).Row
a = choix1 + 4
b = choix2 + 4
s = Cells(a, a).Address
pos1 = InStr(1, s, "$", 1)
pos2 = InStr(pos1 + 1, s, "$", 1)
col1 = Mid(s, pos1 + 1, pos2 - (pos1 + 1))
s = Cells(b, b).Address
pos1 = InStr(1, s, "$", 1)
pos2 = InStr(pos1 + 1, s, "$", 1)
col2 = Mid(s, pos1 + 1, pos2 - (pos1 + 1))
Range("A" & 4 & ":" & "C" & ligne & "," & col1 & 4 & ":" & col2 & ligne).Select
End Sub
Cdlmt
Patrice
Je peux te proposer :
Sub Impression_Multi()
Dim a As Integer
Dim b As Integer
Dim s as String
Dim col1, col2 as String
choix1 = Sheets("Impression").Cells(1, 1).Value
choix2 = Sheets("Impression").Cells(2, 1).Value
ligne = Sheets("Rép-Questions COM").Range("a4").End(xlDown).Row
a = choix1 + 4
b = choix2 + 4
s = Cells(a, a).Address
pos1 = InStr(1, s, "$", 1)
pos2 = InStr(pos1 + 1, s, "$", 1)
col1 = Mid(s, pos1 + 1, pos2 - (pos1 + 1))
s = Cells(b, b).Address
pos1 = InStr(1, s, "$", 1)
pos2 = InStr(pos1 + 1, s, "$", 1)
col2 = Mid(s, pos1 + 1, pos2 - (pos1 + 1))
Range("A" & 4 & ":" & "C" & ligne & "," & col1 & 4 & ":" & col2 & ligne).Select
End Sub
Cdlmt
Patrice