Copier-coller conditionnel de cellules dans un classeur

Le
Eddie les bons tuyaux
Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif :
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.
Questions / Réponses high-tech
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
Mishell
Le #5025211
Bonjour.

Essaie comme ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub


Cordialement

Mishell





"Eddie les bons tuyaux" in message news:
Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une
formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante
sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif
:
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.


Eddie les bons tuyaux
Le #5025041
J'ai apporté les modifs que tu me proposais ; hélas, je reçois toujours le
même message d'erreur.

"Mishell" wrote:

Bonjour.

Essaie comme ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub


Cordialement

Mishell





"Eddie les bons tuyaux" in message news:
Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une
formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante
sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif
:
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.







anonymousA
Le #5024971
Bonjour,

peux-tu mettre ton classeur à disposition sur cjoint car formellement ta
procédure ne présente pas de problème.

Par ailleurs, j'aurais deux remarques:

-il ne t'est pas nécessaire de selectionner les feuilles car celà
ralentit ta macro sauf si tu en as une necessité absolue

-le fait de parcourir la collection Sheets peut occasionner une erreur
si une des feuilles n'est pas du type attendu pour pouvoir ensuite
utiliser la méthode Find sur un range ( ex : une feuille graphique).Il
vaut mieux utiliser la collection Worksheets.

A+

Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif :
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.


Eddie les bons tuyaux
Le #5024801
Je suis novice sur ce forum.

Peux-tu m'expliquer comment je peux mettre mon classeur à dispo par Cjoint ?

Merci d'avance

"anonymousA" wrote:

Bonjour,

peux-tu mettre ton classeur à disposition sur cjoint car formellement ta
procédure ne présente pas de problème.

Par ailleurs, j'aurais deux remarques:

-il ne t'est pas nécessaire de selectionner les feuilles car celà
ralentit ta macro sauf si tu en as une necessité absolue

-le fait de parcourir la collection Sheets peut occasionner une erreur
si une des feuilles n'est pas du type attendu pour pouvoir ensuite
utiliser la méthode Find sur un range ( ex : une feuille graphique).Il
vaut mieux utiliser la collection Worksheets.

A+

Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif :
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.





Eddie les bons tuyaux
Le #5024781
J'ai trouvé ; voici le lien vers mon fichier :
http://cjoint.com/?llmon5kWY6

Ne t'inquiètes pas des formules contenues dans ce fichier : les formules NGL
sont spécifiques à un programme de requétage appelé "F9", lequel intègre un
add-in dans Excel.
Je suis d'accord avec toi ; il n'est pas indispensable de selectionner les
feuilles.

Merci d'avance de ton aide.

Cordialement.



"anonymousA" wrote:

Bonjour,

peux-tu mettre ton classeur à disposition sur cjoint car formellement ta
procédure ne présente pas de problème.

Par ailleurs, j'aurais deux remarques:

-il ne t'est pas nécessaire de selectionner les feuilles car celà
ralentit ta macro sauf si tu en as une necessité absolue

-le fait de parcourir la collection Sheets peut occasionner une erreur
si une des feuilles n'est pas du type attendu pour pouvoir ensuite
utiliser la méthode Find sur un range ( ex : une feuille graphique).Il
vaut mieux utiliser la collection Worksheets.

A+

Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif :
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.





Eddie les bons tuyaux
Le #5024751
Rectification : je t'ai adressé le mauvais fichier (sans les formules) ;
voici le bon fichier :

http://cjoint.com/?llm0I4pthw

"anonymousA" wrote:

Bonjour,

peux-tu mettre ton classeur à disposition sur cjoint car formellement ta
procédure ne présente pas de problème.

Par ailleurs, j'aurais deux remarques:

-il ne t'est pas nécessaire de selectionner les feuilles car celà
ralentit ta macro sauf si tu en as une necessité absolue

-le fait de parcourir la collection Sheets peut occasionner une erreur
si une des feuilles n'est pas du type attendu pour pouvoir ensuite
utiliser la méthode Find sur un range ( ex : une feuille graphique).Il
vaut mieux utiliser la collection Worksheets.

A+

Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ; motif :
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.





Mishell
Le #5024661
C'est Loop Until Cellule Is Nothing qui cause l'erreur quand NGL se trouve
seulement dans des formules.
Essaie ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
If Cellule Is Nothing Then Exit Do
Loop Until Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

"Eddie les bons tuyaux" in message news:
J'ai apporté les modifs que tu me proposais ; hélas, je reçois toujours le
même message d'erreur.

"Mishell" wrote:

Bonjour.

Essaie comme ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une
formule
NGL."

End Sub


Cordialement

Mishell





"Eddie les bons tuyaux" wrote
in message news:
Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une
formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une
formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante
sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ;
motif
:
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.









Eddie les bons tuyaux
Le #5024391
Ca marche !!!

Merci beaucoup et bonne soirée

"Mishell" wrote:

C'est Loop Until Cellule Is Nothing qui cause l'erreur quand NGL se trouve
seulement dans des formules.
Essaie ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
If Cellule Is Nothing Then Exit Do
Loop Until Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une formule
NGL."

End Sub

"Eddie les bons tuyaux" in message news:
J'ai apporté les modifs que tu me proposais ; hélas, je reçois toujours le
même message d'erreur.

"Mishell" wrote:

Bonjour.

Essaie comme ceci:

Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)

If Not Cellule Is Nothing Then
If Adr = "" Then
Adr = Cellule.Address
End If
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Feuille.Cells.FindNext(ActiveCell)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If

Feuille.Protect
Application.ScreenUpdating = True
Adr = ""
Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une
formule
NGL."

End Sub


Cordialement

Mishell





"Eddie les bons tuyaux" wrote
in message news:
Bonjour,

Pour copier coller toutes les cellules d'un classeur comportant une
formule
incluant la chaine de caractères "NGL", j'ai écrit la macro suivante :


Sub RemplacerNGLparValeur1()

'Remplace toutes les formules NGL d'un classeur par leur valeur

Dim Cellule As Range, Feuille As Worksheet
Dim Adr As String


For Each Feuille In Sheets
Feuille.Select
Feuille.Unprotect
Feuille.Visible = True
' Application.ScreenUpdating = False

Set Cellule = Feuille.Cells.Find("NGL", LookIn:=xlFormulas)
If Not Cellule Is Nothing Then
Adr = Cellule.Address
Do
Cellule.Copy
Cellule.PasteSpecial xlPasteValues
Set Cellule = Cells.FindNext(Cellule)
Loop Until Cellule Is Nothing Or Cellule.Address = Adr
End If
Range("A1").Select

Feuille.Protect
Application.ScreenUpdating = True

Next Feuille

MsgBox "Ce classeur ne contient plus aucune cellule comportant une
formule
NGL."

End Sub

Malheureusement, dès qu'on arrive en bas d'une feuille, la macro plante
sur
le code " Loop Until Cellule Is Nothing Or Cellule.Address = Adr" ;
motif
:
Variable objet ou variable de bloc with non définie".

Quelle erreur ai-je pu commettre ?

Merci d'avance de vos lumières.














Publicité
Poster une réponse
Anonyme