fonctionnement macro

  • Initiateur de la discussion Initiateur de la discussion reivax95
  • 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 !

R

reivax95

Guest
bonjour,

j'ai un soucis avec une partie d'une macro, elle fonctionne en mode debogage (F8) mais pas en auto.

La partie qui me pose problème est en rouge.

ce qu'il se passe, en mode debogage:

je compare la valeur de 2 cellules (n° du mois en cours et un index de 1 à 12)
si cette comparaison est vrai, je copie le contenu d'une cellule en face de l'index du mois en cours et uniquement pour ce mois.

en automatique, la cellule est copie en face de chaque index et ne ce soucis plus du mois en cours.

qq'un aurait une explication, parce que là je sèche lamentablement. 😕

merci de votre aide

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 22/12/2009 par
'


Application.ScreenUpdating = False


Dim i As Byte
Dim J As Byte
Dim K As Byte

For i = 2 To Worksheets.Count
With Sheets(i)

If Range("AR9") > Range("AR3") Then
Range("AU3:AV33").Select
Selection.ClearContents
Range("AZ3:AZ33").Select
Selection.ClearContents
End If

.Range("AR9").Value = .Range("AR3").Value

For J = 1 To 31

If .Range("AR7") = 1 Then

If .Range("AR3").Value - 3 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value - 2
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value

Else

If .Range("AR3").Value - 2 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value - 1
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value

Else

If .Range("AR3").Value - 1 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value


End If
End If
End If

Else

If .Range("AR3").Value - 1 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value
End If
End If
Next

For K = 1 To 12

If Range("AR11").Value = Range("BB" & 2 + K).Value Then

.Range("BC" & 2 + K).Value = .Range("AW35").Value

End If

Next


End With
Next i

Sheets("SAISIE").Select

Range("A1").Select

End Sub
 
Re : fonctionnement macro

Bonjour reivax95
Difficile de répondre hors contexte. Par exemple pourquoi a-t-on
Code:
[B][COLOR="DarkSlateGray"]If Range("AR11").Value = Range("BB" & 2 + K).Value Then[/COLOR][/B]
qui fait référence à la feuille active, plutôt que
Code:
[B][COLOR="DarkSlateGray"]If [COLOR="Red"].[/COLOR]Range("AR11").Value = .Range("BB" & 2 + K).Value Then[/COLOR][/B]
qui fait référence à la feuille d'index i ?​
ROGER2327
#2543
 
Re : fonctionnement macro

Bonjour
Salut ROGER2327

bonjour,

j'ai un soucis avec une partie d'une macro, elle fonctionne en mode debogage (F8) mais pas en auto.

La partie qui me pose problème est en rouge.

ce qu'il se passe, en mode debogage:

je compare la valeur de 2 cellules (n° du mois en cours et un index de 1 à 12)
si cette comparaison est vrai, je copie le contenu d'une cellule en face de l'index du mois en cours et uniquement pour ce mois.

en automatique, la cellule est copie en face de chaque index et ne ce soucis plus du mois en cours.


For K = 1 To 12

If Range("AR11").Value = Range("BB" & 2 + K).Value Then

.Range("BC" & 2 + K).Value = .Range("AW35").Value

End If

Next
Sans les valeurs il est difficile de comprendre le problème.

Une remarque :la cellule AR11 est-elle dans la même feuille que AW35, si oui il faut rajouter les points devant range.

JP
 
Re : fonctionnement macro

Bonjour reivax95, ROGER2327, jp14 et le forum,


Simplement des points manquant devant les Range pour les lier avec la feuille (i)

Quelques modifs pour simplifier, à voir :

Sub Macro1()
Application.ScreenUpdating = False

Dim i As Byte, J As Byte, K As Byte

For i = 2 To Sheets.Count
With Sheets(i)

If .Range("AR9") > .Range("AR3") Then
.Range("AU3:AV33").ClearContents
.Range("AZ3:AZ33").ClearContents
End If

.Range("AR9").Value = .Range("AR3").Value

For J = 1 To 31

If .Range("AR7") = 1 Then

If .Range("AR3").Value - 3 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value - 2
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value

ElseIf .Range("AR3").Value - 2 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value - 1
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value

ElseIf .Range("AR3").Value - 1 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value

End If

Else

If .Range("AR3").Value - 1 = .Range("AY" & 2 + J).Value Then
.Range("AU" & 2 + J).Value = .Range("AQ3").Value
.Range("AV" & 2 + J).Value = .Range("AR5").Value
.Range("AZ" & 2 + J).Value = .Range("AR6").Value
End If
End If
Next J

For K = 1 To 12
If .Range("AR11").Value = .Range("BB" & 2 + K).Value Then
.Range("BC" & 2 + K).Value = .Range("AW35").Value
End If
Next K
End With

Next i

Sheets("SAISIE").Select
Range("A1").Select
End Sub
 
- 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
7
Affichages
178
Réponses
4
Affichages
735
Réponses
8
Affichages
390
Réponses
5
Affichages
914
Réponses
9
Affichages
389
Réponses
15
Affichages
788
Réponses
2
Affichages
411
Retour