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

Copier-coller conditionnel de cellules dans un classeur

8 réponses
Avatar
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.

8 réponses

Avatar
Mishell
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.


Avatar
Eddie les bons tuyaux
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.







Avatar
anonymousA
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.


Avatar
Eddie les bons tuyaux
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.





Avatar
Eddie les bons tuyaux
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.





Avatar
Eddie les bons tuyaux
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.





Avatar
Mishell
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" wrote
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.









Avatar
Eddie les bons tuyaux
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" wrote
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.