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

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:)
 

ROGER2327

XLDnaute Barbatruc
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:

ROGER2327

XLDnaute Barbatruc
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
 

ROGER2327

XLDnaute Barbatruc
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
 

Statistiques des forums

Discussions
312 672
Messages
2 090 772
Membres
104 662
dernier inscrit
Hurve