Macro recherche dans une colonne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

argonos

XLDnaute Nouveau
Bonjour à tous,

je fais un projet excel que jusque là j'ai réussi à faire uniquement à l'aide de fonctions mais là j'ai besoin de macros.

Je voudrais chercher une chaîne de caractère précise ("Pas assez de pièces disponibles") dans une plage définie (F25:F42). Cette chaîne n'est pas obligatoirement présente mais je sais que si ce texte n'est pas présent dans la plage de cellules, le programme exécute la macro que j'ai déjà enregistrée sinon si le texte est présent dans une cellule, on n'exécute pas la macro mais il y a un message (Msgbox je crois) qui indique par exemple "Vous ne pouvez pas effectuer cette action".

Je pense qu'il y a juste à écrire un bout de code comprenant une boucle et un If en amont de ma macro déjà enregistrée mais je n'arrive pas à la concrétiser.

Merci d'avance de votre aide.
 
Re : Macro recherche dans une colonne

Bonjour Arganos,

Etant donné la précision de la question, je ne peux que te répondre vaguement et faire des hypothèses.

Code:
Sub PiècesDispo()

Dim i As Byte

  For i = 25 To 42
     If Cells(i, 6) = "Pas assez de pièces disponibles" Then
         MsgBox ("Vous ne pouvez pas effectuer cette action pour la cellule colonne : F, ligne : " & i)
                  GoTo [COLOR="Red"]suite[/COLOR]
     Else
         'mettre ta macro ici
     End If
         [COLOR="Red"]suite[/COLOR]:
  Next i
End Sub

Ne sachant pas, je suis parti du principe que tes cellules contenant "Pas assez de pièces disponibles" n'avait QUE ça à l'intérieur.

Bonne soirée

PS. : comme tu n'as pas mis de fichier exemple, je n'ai pu tester la macro.
 
Dernière édition:
Re : Macro recherche dans une colonne

Bonsoir Argonos, le fil,


En adaptant le bout de code ci-dessus, attention à la variable i

Dans le contexte actuel "Byte", elle ne peut prendre comme valeur que des chiffres entier compris entre 0 et 255. Donc si ton champ va plus loin que F255, remplace Byte par Integer (maxi 32.767) ou carrément Long

Mais comme tu semble déjà connaître le VBA, tu devais surement déjà le savoir (c'était juste au cas où).

Bonne soirée
 
Re : Macro recherche dans une colonne

Oui merci pour l'info,
par contre, quand je créé ma macro avec "enregistrement", j'ai un autre soucis :
j'ai deux classeurs, je copie une plage de l'un qui contient des données puis j'ouvre un second classeur dans lequel je viens coller mon tableau.

Mais quand j'exécute la macro, rien n'est mis en forme. J'aimerais qu'en copiant il copie aussi le format, les valeurs, les largeurs de colonnes et hauteurs de lignes.
Et sur les lignes en rouge que j'ai mises ci-dessous, je sais qu'on peut utiliser la propriétés "path" avec une expression mais je suis maladroit dans leur utilisation et ça bug.

Voici le code:
Code:
Sub archivage_client()
    Sheets("Gestion des stocks").Select
    Range("C25:C42").Select
    Selection.Copy
    Range("E3:E20").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Range("E22").Select
    Application.CutCopyMode = False
    Sheets("Employés").Select
    Range("G12:G15").Select
    Selection.Copy
    Range("F12:F15").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Facture Client").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=""FC-""&MONTH(R[5]C[-3])&RIGHT(YEAR(R[5]C[-3]),2)&""-""&R[6]C[-3]"
    Range("M5").Select
    Range("A1:K57").Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    [COLOR="Red"]ChDir "C:\Users\XXX\Desktop\PROJET\Factures Clients"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\XXX\Desktop\PROJET\Factures Clients\Classeur2.xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False[/COLOR]
    ActiveWindow.Close
    Range("M4").Select
    Selection.Copy
    Range("N4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("N5").Select
    Application.CutCopyMode = False
    Rows("7:7").Select
    Selection.Insert Shift:=xlDown
    Windows("Fichier de Gestion.xls").Activate
    Range("N4").Select
    Selection.Copy
    'Mon classeur et ma feuille portent le même nom
[COLOR="Red"]    Workbooks.Open "C:\Users\XXX\Desktop\PROJET\Archivages Clients.xls"[/COLOR]
    Windows("Archivages Clients.xls").Activate
    Range("B7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("C9:D9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("C7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("C10:D10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("D7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("E7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("F7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Windows("Fichier de Gestion.xls").Activate
    Range("J49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Archivages Clients.xls").Activate
    Range("G7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWindow.Close
    Range("M4").Select
    Selection.ClearContents
    Range("N4").Select
    Selection.ClearContents
    Range("J10").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("J11").Select
End Sub

PS : je n'ai pas (encore) rajouté la macro que tu m'as donnée

Et mille mercis pour l'âme charitable qui prendra un peu de son temps pour moi.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
404
Réponses
10
Affichages
511
Retour