Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Répéter une macro en passant à la cellule suivante

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 !

loic_nl

XLDnaute Nouveau
Bonjour à tous.
Voila mon petit problème...
je voudrai que la macro cherche toutes les valeurs dans la colone T, mais je n'arrive pas à la faire chercher dans toutes la colonne.
Ensuite si la valeur trouvé correspond à ce qui est demandé, la macro ouvre un autre fichier et remplie quelques cellules. Le problème est que je ne sais pas comment passer à la ligne suivante(sont concerné: les colones A et B à partir de la 5ième ligne).

Code:
Sub Documentar_acciones()

Do
ActiveCell.Offset(1#).Select

If ActiveCell.Value = "Cal" Then
    
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\loïc\Bureau\Stage mexique\Projet reduction de consomation de l'électricité\Macro\Balance de acciones.xls"
  
    Sheets("Calidad").Select
    Windows("Balance de acciones.xls").Activate
                
    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C2:R3C5"
    
    Range("B5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C10"
    
    Range("A5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C15"


ElseIf ActiveCell.Value = "Ing" Then
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\loïc\Bureau\Stage mexique\Projet reduction de consomation de l'électricité\Macro\Balance de acciones.xls"
  
    Sheets("Ingeniería").Select
    Windows("Balance de acciones.xls").Activate
                
    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C2:R3C5"
    
    Range("B5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C10"
    
    Range("A5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C15"
End If

Loop Until ActiveCell.Value = ""

End Sub


Merci pour votre aide🙂
 
Re : Répéter une macro en passant à la cellule suivante

Bonjour loic_nl
Peut-être quelque chose comme ça ?
Code:
[COLOR="DarkSlateGray"][B]Sub Documentar_acciones()
Dim actCel As Range
[COLOR="Purple"]Set actCel = ActiveCell[/COLOR]
Do
[COLOR="Purple"]Set actCel = actCel[/COLOR].Offset(1#).Select

If [COLOR="Purple"]actCel[/COLOR].Value = "Cal" Then
    
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\loïc\Bureau\Stage mexique\Projet reduction de consomation de l'électricité\Macro\Balance de acciones.xls"
  
    Sheets("Calidad").Select
    Windows("Balance de acciones.xls").Activate
                
    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C2:R3C5"
    
    Range("B5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C10"
    
    Range("A5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C15"


ElseIf [COLOR="Purple"]actCel[/COLOR].Value = "Ing" Then
    Workbooks.Open Filename:= _
    "C:\Documents and Settings\loïc\Bureau\Stage mexique\Projet reduction de consomation de l'électricité\Macro\Balance de acciones.xls"
  
    Sheets("Ingeniería").Select
    Windows("Balance de acciones.xls").Activate
                
    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C2:R3C5"
    
    Range("B5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C10"
    
    Range("A5").Select
    ActiveCell.FormulaR1C1 = _
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C15"
End If

Loop Until [COLOR="Purple"]actCel[/COLOR].Value = ""

End Sub[/B][/COLOR]
ROGER2327
#2354
 
Dernière édition:
Re : Répéter une macro en passant à la cellule suivante

la macro génère une erreur :"erreur d'execution 424 objet requis" pour la ligne : Set actCel = actCel.Offset(1#).Select

Je trouve aucune solution. et j'ai me creuser la tête.
 
Re : Répéter une macro en passant à la cellule suivante

Re...
Essayez
Code:
[COLOR="DarkSlateGray"][B]Set actCel = actCel.Offset(1#)
[/B][/COLOR]
En l'absence de classeur support, je n'ai pas pu tester la procédure : il y a peut-être encore d'autres erreurs grossières du même genre.​
ROGER2327
#2394
 
Re : Répéter une macro en passant à la cellule suivante

salut roger2327
Merci ta solution fonctionne, mais seulement pour rechercher les valeurs.
Pour ensuite les écrire et passer à la ligne, la macro ne le fait pas.
 
Re : Répéter une macro en passant à la cellule suivante

Re...
Il est assez difficile d'aller plus loin sans avoir une vue précise de la situation, c'est-à-dire sans voir le support de votre procédure.
Cependant, on voit qu'en écrivant
Code:
[COLOR="DarkSlateGray"][B]    Range("B2:C2").Select
    ActiveCell.FormulaR1C1 = _ 
        "='[CHECK LIST DE AUDITORIA POR NIVEL 2010.xls]CHECK LIST'!R3C2:R3C5"[/B][/COLOR]
vous sélectionnez la plage B2:C2. La cellule active est donc B2.
La deuxième ligne écrit la formule =$B$3:$E$3dans cette cellule. Comme la formule fait référence à plusieurs cellules, seule la première valeur de la plage sera prise en considération, c'est-à-dire E3.
Bien entendu, rien n'est écrit dans C2 puisque cette cellule n'est pas la cellule active.

Pour ce qui est de la structure générale
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim actCel As Range
Set actCel = ActiveCell
Do
Set actCel = actCel.Offset(1#)

If actCel.Value = "Cal" Then
    Workbooks.Open Filename:="Adresse_de_fichier\Fichier_1.xls"
    [COLOR="SeaGreen"]'Code 1[/COLOR]
ElseIf actCel.Value = "Ing" Then
    Workbooks.Open Filename:="Adresse_de_fichier\Fichier_2.xls"
    [COLOR="SeaGreen"]'Code 2[/COLOR]
End If

Loop Until actCel.Value = ""
End Sub[/B][/COLOR]
elle travaille avec trois classeurs :
  • le classeur courant qui porte la procédure toto ;
  • Le classeur Fichier_1 ;
  • Le classeur Fichier_2.
Elle définit actCel comme étant la cellule active de la feuille visible. Appelons-la X1 par commodité.
Elle commence une boucle en décalant la référence actCel de X1 à X2.
Elle teste la valeur de cette référence. En fonction du résultat du test, elle exécute l'une des trois actions :
  • Ouverture de Fichier_1.xls et éxécution du code 'Code1 ;
  • Ouverture de Fichier_2.xls et éxécution du code 'Code2 ;
  • Rien.
Elle teste la sortie de boucle : si la cellule X2 contient "", fin de boucle, sinon répétition de la boucle (qui s'appliquera à X3, X4,... jusqu'à rencontrer une valeur "" dans cette cellule.

Je ne peux en dire plus avec l'information que j'ai. Tout dépend ensuite de ce que vous voulez précisément faire. Dire, par exemple, "je voudrai que la macro cherche toutes les valeurs dans la colone T" ou "sont concerné: les colones A et B à partir de la 5ième ligne)" est vague sachant qu'il existe une colonne A, une colonne B et une colonne T dans chacune des feuilles des trois classeurs mis en œuvre.
ROGER2327
#2402
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…