A la place, je ne pense pas qu'il sera possible de faites lire Excel comme vous le voulez (sauf si vous construisez un tableau en mémoire en utilisant une boucle comme Matt l'a démontré). Si j'ai bien compris alors vous voulez une sortie comme 1,2,2,4.
Exemple de code pour obtenir ce résultat en utilisant une colonne vide temporaire:
Sub ArrayTest2()
Const tmpCol As Long = 2 '\\ Change this to suit. This will be your temporary column
Dim rngIn As Range, rngOut As Range
Set rngIn = Range(Cells(1, 1), Cells(4, 1))
rngIn.Copy Cells(1, tmpCol)
Set rngOut = Cells(1, tmpCol).Resize(rngIn.Count, 1)
With rngOut
.UnMerge
If .SpecialCells(xlCellTypeBlanks).Count > 0 Then .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
Debug.Print rngOut(1) & "," & rngOut(2) & "," & rngOut(3) & "," & rngOut(4)
Cells(1, tmpCol).EntireColumn.Delete
End Sub
'Range (3,1) .MergeArea.Cells (1,1) .Value' fonctionne pour obtenir la valeur, mais je veux que le tableau le prenne automatiquement – SLT
Vous voulez donc que la deuxième valeur soit vide ou que trois valeurs soient renvoyées? Comment utilisez-vous cette sortie? – SJR
Je veux faire un tableau avec des valeurs d'une colonne, sans spécifier pour chaque cellule si elle est fusionnée ou non. Le debug.Print est juste pour indiquer si cela est fait avec succès (à des fins de débogage) – SLT