Effectuer une macro tant que j'ai une donnée "toto" dans mes feuilles ?

Bonjour

Je suis nouveau sur le forum et débutant en vba...j'ai donc forcement un soucis !

merci pour votre aide !!

voici un état du chantier :

j'ai un fichier excel avec X feuilles contenant des données diverses mais toujours sous le même format.

Je cherche a trouver toutes les cellules contenant un mot en particulier parmi toutes les feuilles et remplacer la cellule étant 3 colonnes plus loin par un nombre malheureusement la macro que j'ai monté ne me permet pas de trouver tous les mots dans chaque feuille et se contente de ne changer que le premier mot.

pour être plus clair :

je cherche "toto" dans toutes les feuilles, un fois "toto" trouve je veux remplacer le contenu de la cellule qui se trouve 3 colonnes plus loin par un nombre 10 par exemple et ainsi de suite pour tous les "toto" trouves.

voici la macro...montée avec ce que j'ai pu glane a gauche et a droite...

Sub Remplacement_donnees_dans_classeur()

'déclaration des variables :

Dim Ws As Worksheet

Dim Trouve As Range, PlageDeRecherche As Range

Dim Valeur_Cherchee As String, AdresseTrouvee As String

Application.ScreenUpdating = False

For Each Ws In Worksheets

Ws.Select

'********* à adapter ***********

'affectation de valeurs aux variables :

'on cherche le mot "toto"

'dans la deuxieme colonne de la feuille active

Set PlageDeRecherche = ActiveSheet.Columns(2)

'*******************************

'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)

With ActiveSheet

For Each Trouve In PlageDeRecherche

Valeur_Cherchee = "toto"

Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :

If Trouve Is Nothing Then

'ici, traitement pour le cas où la valeur n'est pas trouvée

AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address

Else

'ici, traitement pour le cas où la valeur est trouvée

Trouve.Offset(, 3).Value = Val("1.9")

End If

Next Trouve

End With

Next Ws

End Sub

Bonjour,

en cherchant un peu plus sur le net :

Cet exemple montre comment rechercher toutes les cellules de la plage A1:A500 dans la première feuille de calcul contenant la valeur 2 et comment la remplacer par la valeur 5.

With Worksheets(1).Range("a1:a500") 
    Set c = .Find(2, lookin:=xlValues) 
    If Not c Is Nothing Then 
        firstAddress = c.Address 
        Do 
            c.Value = 5 
            Set c = .FindNext(c) 
        Loop While Not c Is Nothing And c.Address <> firstAddress 
    End If 
End With

Si cela peut vous aider

@ bientôt

LouReeD

merci pour cet exemple.

je vais tenter de l'adapter a mon cas maintenant...a suivre ! !

Ce devrait pas être trop dur, il y a la boucle des feuilles à ajouter, le décalage de trois colonne pour inscrire la nouvelle valeur etc...

Merci @ vous et bon courage.

@ bientôt

LouReeD

Ce devrait pas être trop dur, il y a la boucle des feuilles à ajouter, le décalage de trois colonne pour inscrire la nouvelle valeur etc...

Merci @ vous et bon courage.

@ bientôt

LouReeD

alors il ne faut pas oublier que je débute...et donc que je tatonne ! ah ah ah

merci en tout cas !

Voilà,

un petit essai avec un peu de commentaire :

Option Explicit

Sub Remplacement_donnees_dans_classeur()
    'déclaration des variables
    Dim Ws As Worksheet
    Dim Trouve As Range, firstAddress
    Dim Valeur_Cherchee As String
    Application.ScreenUpdating = False
    Valeur_Cherchee = "toto"
    For Each Ws In Worksheets ' on boucle sur les feuilles
        With Ws.Range("B:B") ' avec la première feuille et la deuxième colonne
            Set Trouve = .Find(Valeur_Cherchee, LookIn:=xlValues) ' on cherche toto
            If Not Trouve Is Nothing Then ' si non (trouve = rien) c'est à dire on a trouvé une cellule qui contient toto
                firstAddress = Trouve.Address ' on met en mémoire cette première adresse
                Do ' on lance une boucle indéfinie
                    Trouve.Offset(0, 3).Value = Val("1.9") ' on met la valeur 10 trois colonnes plus loin
                    Set Trouve = .FindNext(Trouve) ' on relance la recherche
                ' on continue la recherche tant qu'on trouve un "toto" et que l'on n'est pas revenu sur la première cellule trouvée
                Loop While Not Trouve Is Nothing And Trouve.Address <> firstAddress
            End If
        End With
    Next Ws ' feuille suivante
End Sub

Attention ! Je n'ai pas essayé !

@ bientôt

LouReeD

LouReed !! it's a perfect day !!

La macro fonctionne a la perfection , vous venez de m’épargner quelques heures d'un travail fastidieux !!

merci encore et bon week end !!

Je n'irais pas jusque là... Mais si vous le dites, c'est une bonne journée !

Merci pour vos remerciements !

Bon weekend @ vous et

@ bientôt sur le forum

LouReeD

J'oubliais :

@ bientôt

LouReeD

Rechercher des sujets similaires à "effectuer macro tant que donnee toto mes feuilles"