sélection SpecialCells(xlCellTypeBlanks)

Le
Laurent Daures
bonjour à tous,

est-il possible de sélectionner des cellules contenant une certaine valeur
avec cette fonction SpecialCells(xlCellTypeBlanks)
Ce que j'aimerais obtenir c'est par exemple SpecialCells("=zaza").select

Merci à vous
Siesting Hoax
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22663631
Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------

--
MichD
--------------------------------------------


"Laurent Daures" 4cb1cecc$0$32431$
bonjour à tous,

est-il possible de sélectionner des cellules contenant une certaine valeur
avec cette fonction SpecialCells(xlCellTypeBlanks)
Ce que j'aimerais obtenir c'est par exemple SpecialCells("=zaza").select

Merci à vous
Siesting Hoax
DanielCo
Le #22663731
Bonjour.
Il me semble qu'en utilisant "Union", on s'affranchit de cette limite.
Cordialement.
Daniel


Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------
michdenis
Le #22663801
Bonjour Daniel,

Ce que tu énonces est vrai. Le seul hic, c'est le temps de
traitement s'accroît au fur et à mesure que la plage grandit.

Je n'ai pas fait de test particulier dans ce cas...
attendons que le demandeur précise son besoin !

--
MichD
--------------------------------------------


"DanielCo" Bonjour.
Il me semble qu'en utilisant "Union", on s'affranchit de cette limite.
Cordialement.
Daniel


Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------
Laurent Daures
Le #22664151
Merci Denis,
c'est bien ce que je pensais.
La définition d'une plage par macro est limitée effectivement.
Pour sélectionner des cellules vides, c'est instantanné avec SpecialCells.
Mon problème était de trouver toutes les cellules contenant une chaine de
caractères et de les remplacer par le nombre 1.
Je vais donc utiliser ta macro en partie pour faire une recherche rapide des
cellules.
Ensuite, je leur donne la valeur 1.

Merci encore
Amicalement
Laurent



"michdenis" i8snfk$hqd$
Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------

--
MichD
--------------------------------------------


"Laurent Daures" groupe de discussion :
4cb1cecc$0$32431$
bonjour à tous,

est-il possible de sélectionner des cellules contenant une certaine valeur
avec cette fonction SpecialCells(xlCellTypeBlanks)
Ce que j'aimerais obtenir c'est par exemple SpecialCells("=zaza").select

Merci à vous
Siesting Hoax

Laurent Daures
Le #22664391
rebonjour,
afin d'alléger le temps de traitement de la macro, j'ai limité la plage
sélectionnée à 27 cellules (sans utiliser union)
cela marche pas mal !
Voici la macro
en fait je lui fais faire la recherche sur 4 lignes à la fois, pas plus,
cela me semble rapide puisque de 30 secondes, je passe à 4 secondes pour
l'ensemble de l'opération, ce qui semble acceptable.

si vous voulez vous amuser à inscrire plein de fois QL dans des cellules,
dans la feuille, cela vous les remplace par 1.
J'ai limité à 27 la boucle, pour ne pas dépasser les 255 caractères dans la
définition de la plage.
Certes, comme dit DanielCo, Union s'en afranchit, mais j'avais commencé ma
macro, je testerai avec Union aussi.

Sub Remplace_QL()
On Error Resume Next
z = 4
compteur = 0
For i = 4 To 150 Step 4
recherche = Range("B" & z & ":go" & i + 4).Address
z = z + 5
For Each cell In Range(recherche)
If Left(cell, 2) = "QL" Then
compteur = compteur + 1
plage = plage & "," & cell.Address
If compteur = 27 Then
plage = Right(plage, Len(plage) - 1)
Range(plage).Select
Range(plage) = 1 '.Select
plage = ""
compteur = 0
End If
End If
Next
Next
End Sub

Voilà,
merci à vous
Amicalement
Laurent
"michdenis" i8sr0q$pq4$
Bonjour Daniel,

Ce que tu énonces est vrai. Le seul hic, c'est le temps de
traitement s'accroît au fur et à mesure que la plage grandit.

Je n'ai pas fait de test particulier dans ce cas...
attendons que le demandeur précise son besoin !

--
MichD
--------------------------------------------


"DanielCo" discussion : i8sqh1$onv$
Bonjour.
Il me semble qu'en utilisant "Union", on s'affranchit de cette limite.
Cordialement.
Daniel


Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------



Laurent Daures
Le #22664381
je voulais préciser qu'il est inutile de sélectionner les cellules, j'avais
mis ça pour vérifier que ma plage était bien définie.
Sub Remplace_QL()
On Error Resume Next
z = 4
compteur = 0
For i = 4 To 150 Step 4
recherche = Range("B" & z & ":go" & i + 4).Address
z = z + 5
For Each cell In Range(recherche)
If Left(cell, 2) = "QL" Then
compteur = compteur + 1
plage = plage & "," & cell.Address
If compteur = 27 Then
plage = Right(plage, Len(plage) - 1)
' Range(plage).Select
Range(plage) = 1 '.Select
plage = ""
compteur = 0
End If
End If
Next
Next
End Sub
Là on passe à 2 secondes, pas mal !
Laurent
"Laurent Daures" 4cb21204$0$32462$
rebonjour,
afin d'alléger le temps de traitement de la macro, j'ai limité la plage
sélectionnée à 27 cellules (sans utiliser union)
cela marche pas mal !
Voici la macro
en fait je lui fais faire la recherche sur 4 lignes à la fois, pas plus,
cela me semble rapide puisque de 30 secondes, je passe à 4 secondes pour
l'ensemble de l'opération, ce qui semble acceptable.

si vous voulez vous amuser à inscrire plein de fois QL dans des cellules,
dans la feuille, cela vous les remplace par 1.
J'ai limité à 27 la boucle, pour ne pas dépasser les 255 caractères dans
la définition de la plage.
Certes, comme dit DanielCo, Union s'en afranchit, mais j'avais commencé ma
macro, je testerai avec Union aussi.

Sub Remplace_QL()
On Error Resume Next
z = 4
compteur = 0
For i = 4 To 150 Step 4
recherche = Range("B" & z & ":go" & i + 4).Address
z = z + 5
For Each cell In Range(recherche)
If Left(cell, 2) = "QL" Then
compteur = compteur + 1
plage = plage & "," & cell.Address
If compteur = 27 Then
plage = Right(plage, Len(plage) - 1)
Range(plage).Select
Range(plage) = 1 '.Select
plage = ""
compteur = 0
End If
End If
Next
Next
End Sub

Voilà,
merci à vous
Amicalement
Laurent
"michdenis" i8sr0q$pq4$
Bonjour Daniel,

Ce que tu énonces est vrai. Le seul hic, c'est le temps de
traitement s'accroît au fur et à mesure que la plage grandit.

Je n'ai pas fait de test particulier dans ce cas...
attendons que le demandeur précise son besoin !

--
MichD
--------------------------------------------


"DanielCo" discussion : i8sqh1$onv$
Bonjour.
Il me semble qu'en utilisant "Union", on s'affranchit de cette limite.
Cordialement.
Daniel


Bonjour,

La réponse à ta question est non.

Tu pourrais utiliser une macro de ce genre :
La macro suivante à une restriction... la variable
plage ne doit pas contenir une chaîne de caractères
de plus de 255 caractères. Tu peux utiliser "Address(0,0)
pour utiliser des adresses relatives...Conséquemment tu
es un peu limité par l'étendue de la plage à sélectionner !


'-----------------------------------------
Sub test()
Dim Rg As Range, Trouve As Range
Dim Adr As String, Cherche As String
Dim Sh As Worksheet

'******Variables à définir*************
Cherche = "zaza"
Set Sh = Worksheets("Feuil1")
'***************************************

With Sh
Set Rg = .Range("A1:G25") 'Plages à définir
End With

With Rg
Set Trouve = .Find(Cherche, LookIn:=xlValues, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
plage = plage & Trouve.Address & ","
Set Trouve = .FindNext(Trouve)

Loop While Trouve.Address <> Adr
plage = "" & Left(plage, Len(plage) - 1) & ""
Feuil1.Range(plage).Select
End If
End With
End Sub
'------------------------------







news.free.fr
Le #22664811
Bonsoir.
Essaie :
Selection.Replace "QL*", 1, xlWhole, , True
Cordialement.
Daniel
Laurent Daures
Le #22665211
génial !
Et ultra rapide :-))
deux lignes ont remplacé une longue macro compliquée.
Merci Daniel !
Amicalement
Siesting Hoax
"news.free.fr" i8t96v$ug$
Bonsoir.
Essaie :
Selection.Replace "QL*", 1, xlWhole, , True
Cordialement.
Daniel


Jacquouille
Le #22666371
Un grand salut de Liège au Beau Marseillais.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"Laurent Daures" 4cb1cecc$0$32431$
bonjour à tous,

est-il possible de sélectionner des cellules contenant une certaine valeur
avec cette fonction SpecialCells(xlCellTypeBlanks)
Ce que j'aimerais obtenir c'est par exemple SpecialCells("=zaza").select

Merci à vous
Siesting Hoax

Laurent Daures
Le #22667371
merci
et bonjour du sud (sous la pluie ces jours-ci) à tous nos amis belges et
francophones.
;-)
Amicalement
Siesting Hoax
"Jacquouille" news: 4cb300c9$0$14260$
Un grand salut de Liège au Beau Marseillais.

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille (MPFE).

"Laurent Daures" news: 4cb1cecc$0$32431$
bonjour à tous,

est-il possible de sélectionner des cellules contenant une certaine
valeur avec cette fonction SpecialCells(xlCellTypeBlanks)
Ce que j'aimerais obtenir c'est par exemple SpecialCells("=zaza").select

Merci à vous
Siesting Hoax





Publicité
Poster une réponse
Anonyme