• Initiateur de la discussion Initiateur de la discussion Benlo
  • Date de début Date de début

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 !

B

Benlo

Guest
Bonjour tout le monde,

J'ai dans une feuille, en A2, A3, A4 etc... un code dans chaque cellule. Je cherche à faire une macro en boucle qui viendra mettre en B2, B3, B4 etc... une formule tant que la cellule A ne sera pas vide.

Note: Je ne sais pas d'avance combien de codes j'aurai de listés dans la colonne A.

Voici le bout de code que je tente d'adapter :

Sub Macro14()
'
Sheets('RapportCodesLettres').Range('A2').Select
'
'Déclaration des variables
Dim CelluleCourante As Range
Dim CelluleSuivante As Range
'
'Détermine où sera la cellule courante
Set CelluleCourante = Sheets('RapportCodesLettres').Range('A2')
'
'Cette boucle s'exécutera tant que la cellule ne sera pas vide
Do While Not IsEmpty(CelluleCourante)
Set CelluleSuivante = CelluleCourante.Offset(1, 0)
'
If CelluleCourante.Value <> '' Then
'
ActiveCell.Offset(0, 1).FormulaR1C1 = _
'=SUMPRODUCT((Données!R4C6:R11000C6=RC1)*(Données!R4C48:R11000C48=''sel'')*(Données!R4C40:R11000C40))'
'
End If
'
Set CelluleCourante = CelluleSuivante
Loop
End Sub

Quand j'exécute cette macro, la formule se met bien en B1 mais la macro s'arrête même si j'ai d'autre codes en A3, A4 etc...

Merci de votre aide !
 
Bonjour Benlo, bnjour le forum,

J'ai modifié ton code mais j'obtiens un bug sur la ligne de la formule. Es-tu sûr de cette formule ?


Sub Macro1()
Dim Cel As Range 'déclare la variable Cel
Dim Plage As Range 'déclare la variable Plage

'définit la variable Plage
Set Plage = Sheets('RapportCodesLettres').Range('A2:A' & Sheets('RapportCodesLettres').Range('A65536').End(xlUp).Row)

For Each Cel In Plage 'boucle sur toutes les cellules Cel de la plage Plage
If Cel.Value <> '' Then 'condition : si la cellule Cel n'est pas vide
'place la formule dans la cellule à droite de Cel
Cel.Offset(0, 1).FormulaR1C1 = '=SUMPRODUCT((Données!R4C6:R11000C6=RC1)*(Données!R4C48:R11000C48=''sel'')*(Données!R4C40:R1100 0C40))'
End If 'fin de la condition
Next Cel 'prochaine cellule de la plage Plage
End Sub
 
Bonjour Robert,

Merci pour ton bout de code, il fonctionne très bien...

Pour ce qui est du bug sur la formule, je ne sais pas pourquoi il s'est produit mais j'ai remplacé la formule dans le code et tout fonctionne.

Merci beaucoup pour ton aide !

Benlo
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
3
Affichages
835
Retour