Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Visual Basic et cellules fusionnees

7 réponses
Avatar
adouville
Bonjour a tous,

Je cherche a creer une macro (donc sous visual basic) qui me permette
de parcourir une feuille excel.
Cette feuille excel a certaines cellules fusionnees.
Pour chaque cellule (des cellules fusionnees ne forment qu'une seule et
meme cellule), j'execute une instruction specifique.
Quelqu'un pourrait-il me dire quelle ligne de commande utilisee pour
acceder a chaque cellule les unes a la suite des autres (et donc ne
considerer les cellules fusionnees comme une seule cellule).

Merci d'avance.

7 réponses

Avatar
Daniel
Bonjour.
Quel est le problème ? Dans l'exemple suivant, A12 et B12 sont fusionnées.

Sub t()
Dim c As Range
For Each c In Range("A10:B15")
c.Value = "toto"
Next c
End Sub

Cordialement.
Daniel
"adouville" a écrit dans le message de news:

Bonjour a tous,

Je cherche a creer une macro (donc sous visual basic) qui me permette
de parcourir une feuille excel.
Cette feuille excel a certaines cellules fusionnees.
Pour chaque cellule (des cellules fusionnees ne forment qu'une seule et
meme cellule), j'execute une instruction specifique.
Quelqu'un pourrait-il me dire quelle ligne de commande utilisee pour
acceder a chaque cellule les unes a la suite des autres (et donc ne
considerer les cellules fusionnees comme une seule cellule).

Merci d'avance.



Avatar
adouville
Je pense m'etre mal explique.

Je souhaite ecrire un fichier texte contenant les valeurs d'une feuille
excel sachant que des cellules fusionnees comptent pour une seule
cellule.

Par exemple, je fabrique ma feuille Excel telle que:
A1:D1 (cellules fusionnees) = "toto"
E1 (cellule non fusionnee) = "titi"
F1 (cellule non fusionnee) = "tutu"
G1:H1 (cellules fusionnees) = "tata"

Mon fichier texte aura l'allure suivante:
"toto"
"titi"
"tutu"
"tata"

Je voulais faire:

Set MaCellule = Range.Cells(A, 1)
Last_Address = MaCellule.Address
For I = 2 To 10
Set MaCellule = Range.Cells(A, I)
If (MaCellule.Address <> Last_Address) Then
RegStr = "// Cellule non fusionnee: " + MaCellule.Address
Print #1, RegStr
End If
Next I

Mais je ne connais pas la syntaxe exacte et cela m'a l'air un peu
complique...

Merci d'avance.
Avatar
Daniel
Bonjour.
Essaie ceci :

Dim c As Range
For Each c In Range("A1:H1")
If c.Value <> "" Then
Print #1, c.Value
End If
Next c

Cordialement.
Daniel
"adouville" a écrit dans le message de news:

Je pense m'etre mal explique.

Je souhaite ecrire un fichier texte contenant les valeurs d'une feuille
excel sachant que des cellules fusionnees comptent pour une seule
cellule.

Par exemple, je fabrique ma feuille Excel telle que:
A1:D1 (cellules fusionnees) = "toto"
E1 (cellule non fusionnee) = "titi"
F1 (cellule non fusionnee) = "tutu"
G1:H1 (cellules fusionnees) = "tata"

Mon fichier texte aura l'allure suivante:
"toto"
"titi"
"tutu"
"tata"

Je voulais faire:

Set MaCellule = Range.Cells(A, 1)
Last_Address = MaCellule.Address
For I = 2 To 10
Set MaCellule = Range.Cells(A, I)
If (MaCellule.Address <> Last_Address) Then
RegStr = "// Cellule non fusionnee: " + MaCellule.Address
Print #1, RegStr
End If
Next I

Mais je ne connais pas la syntaxe exacte et cela m'a l'air un peu
complique...

Merci d'avance.



Avatar
adouville
Merci c'est exactement ce que je voulais... il me reste quand meme des
choses a faire mais c'est l'idee que je voulais.

Salutations et merci encore!!
Avatar
adouville
Pardon, encore une petite question:

Comment faire une boucle sur toute la feuille:

For Iigne = 1 To 1000 -> Ligne 1 a 1000
For Each c In Range( ligne, colonne 1 a 100)
If c.Value <> "" Then
Print #1, c.Value
End If
Next c
Next Ligne

Merci!
Avatar
Daniel
Le code suivant devrait le faire :

Dim c As Range, Plage As Range
Set Plage = Range(Cells(1, 1), Cells(1000, 100))
For Each c In Plage
If c.Value <> "" Then
Print #1, c.Value
End If
Next c

Daiel
"adouville" a écrit dans le message de news:

Pardon, encore une petite question:

Comment faire une boucle sur toute la feuille:

For Iigne = 1 To 1000 -> Ligne 1 a 1000
For Each c In Range( ligne, colonne 1 a 100)
If c.Value <> "" Then
Print #1, c.Value
End If
Next c
Next Ligne

Merci!



Avatar
adouville
Quelle rapidite et quelle maitrise!

Merci beaucoup... j'en ai fini avec mes questions!