Probleme Code fonction While et if
Marg12
-
Marg12 -
Marg12 -
Bonjour à tous,
J'ai un problème, j'ai crée une boucle mais elle ne fonctionne pas
Pouvez vous m'aider s'il vous plait ?
Voici le code :
EDIT : Ajout des BALISES DE CODE
J'ai un problème, j'ai crée une boucle mais elle ne fonctionne pas
Pouvez vous m'aider s'il vous plait ?
Voici le code :
Private Sub Btn_recherche_Click()
'Choix des variables
Dim i As Integer
Dim n As Integer
Dim compt As Integer
'Choix des variables texte
Dim nom_lot As String
Dim eqt_lot As String
i = 0
n = 0
compt = 1
Dim reponse As String
reponse = MsgBox("Avez-vous fini l'analyse envrionnementale ?", vbOKCancel)
If reponse = 1 Then
'Aller sur la feuille active
Sheets("AES").Activate
'vérification qu'il y a déjà des valeurs dans le AE
While Sheets("AES").Cells(n + 8, 1) <> ""
If Sheets("AES").Cells(compt + 7, 8) = Oui Then
'Copie numero d'ordre
Sheets("Bilan_AES").Cells(compt + 7, 1) = compt
'Activité / phase du cycle de vie
Sheets("Bilan_AES").Cells(compt + 7, 2) = Sheets("AES").Cells(n + 2, 2)
'Aspect
Sheets("Bilan_AES").Cells(compt + 7, 3) = Sheets("AES").Cells(n + 2, 3)
'Mode normal
Sheets("Bilan_AES").Cells(compt + 7, 4) = Sheets("AES").Cells(n + 2, 4)
'Mode anormal
Sheets("Bilan_AES").Cells(compt + 7, 5) = Sheets("AES").Cells(n + 2, 5)
'Mode accidentel
Sheets("Bilan_AES").Cells(compt + 7, 6) = Sheets("AES").Cells(n + 2, 6)
'Conformité réglementaire
Sheets("Bilan_AES").Cells(compt + 7, 7) = Sheets("AES").Cells(n + 2, 7)
'AES
Sheets("Bilan_AES").Cells(compt + 7, 8) = Sheets("AES").Cells(n + 2, 8)
'Cotation (F,G et S)
Sheets("Bilan_AES").Cells(compt + 7, 9) = Sheets("AES").Cells(n + 2, 9)
Sheets("Bilan_AES").Cells(compt + 7, 10) = Sheets("AES").Cells(n + 2, 10)
Sheets("Bilan_AES").Cells(compt + 7, 11) = Sheets("AES").Cells(n + 2, 11)
'Copier formule de nombre à cotation
Sheets("Bilan_AES").Cells(i + 8, 12) = "=(2*I" & i + 8 & ")+(3*J" & i + 8 & ")+K" & i + 8
'Moyen de prévention
Sheets("Bilan_AES").Cells(compt + 7, 13) = Sheets("AES").Cells(n + 2, 13)
'Cotation M
Sheets("Bilan_AES").Cells(compt + 7, 14) = Sheets("AES").Cells(n + 2, 14)
'Copier formule de nombre à impact significatif
Sheets("Bilan_AES").Cells(i + 8, 15) = "=L" & i + 8 & "*N" & i + 8
'Formule action à faire ou pas
'=SI(H8="Oui";"Oui";SI(O8>=108;"Oui";"Non"))
Sheets("Bilan_AES").Cells(i + 8, 16).Formula = "=IF(H" & i + 8 & "=""Oui"",""Oui"",IF(O" & i + 8 & ">=45,""Oui"",""Non""))"
'Action à metttr en place
Sheets("Bilan_AES").Cells(compt + 7, 17) = Sheets("BDD").Cells(n + 2, 10)
compt = compt + 1
End If
n = n + 1
Wend
End If
'Aller sur la feuille active
Sheets("Bilan_AES").Activate
End Sub
EDIT : Ajout des BALISES DE CODE
Configuration: Windows / Edge 88.0.705.63
A voir également:
- Probleme Code fonction While et if
- Code ascii - Guide
- Fonction si et - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
2 réponses
Bonjour,
Déjà, merci d'utiliser les balises de code lorsque tu postes du code sur le forum.
Explications (à lire entièrement !) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, dans ton IF, si Oui est une chaine de texte et non le nom d'une variable... tu dois la mettre entre quotes
Déjà, merci d'utiliser les balises de code lorsque tu postes du code sur le forum.
Explications (à lire entièrement !) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, dans ton IF, si Oui est une chaine de texte et non le nom d'une variable... tu dois la mettre entre quotes
If Sheets("AES").Cells(compt + 7, 8) = "Oui" Then
Le code ne fonctionne toujours pas comme je le souhaiterais
J'ai remis l'incrémentation dans ma variable à la fin
En faisant le pas à pas je vois qu'il rentre correctement dans mon if quand les lignes possède un "oui" mais il ne copie pas les bonnes lignes j'ai du rater un truc
J'ai remis l'incrémentation dans ma variable à la fin
En faisant le pas à pas je vois qu'il rentre correctement dans mon if quand les lignes possède un "oui" mais il ne copie pas les bonnes lignes j'ai du rater un truc
Private Sub Btn_recherche_Click()
'Choix des variables
Dim i As Integer
Dim n As Integer
Dim compt As Integer
'Choix des variables texte
Dim nom_lot As String
Dim eqt_lot As String
i = 0
n = 0
compt = 1
Dim reponse As String
reponse = MsgBox("Avez-vous fini l'analyse envrionnementale ?", vbOKCancel)
If reponse = 1 Then
'Aller sur la feuille active
Sheets("AES").Activate
'vérification qu'il y a déjà des valeurs dans le AE
While Sheets("AES").Cells(n + 8, 1) <> ""
If Sheets("AES").Cells(n + 8, 8) = "Oui" Then
'Copie numero d'ordre
Sheets("Bilan_AES").Cells(compt + 10, 1) = compt
'Activité / phase du cycle de vie
Sheets("Bilan_AES").Cells(compt + 10, 2) = Sheets("AES").Cells(n + 7, 2)
'Aspect
Sheets("Bilan_AES").Cells(compt + 10, 3) = Sheets("AES").Cells(n + 7, 3)
'Mode normal
Sheets("Bilan_AES").Cells(compt + 10, 4) = Sheets("AES").Cells(n + 7, 4)
'Mode anormal
Sheets("Bilan_AES").Cells(compt + 10, 5) = Sheets("AES").Cells(n + 7, 5)
'Mode accidentel
Sheets("Bilan_AES").Cells(compt + 10, 6) = Sheets("AES").Cells(n + 7, 6)
'Conformité réglementaire
Sheets("Bilan_AES").Cells(compt + 10, 7) = Sheets("AES").Cells(n + 7, 7)
'AES
Sheets("Bilan_AES").Cells(compt + 10, 8) = Sheets("AES").Cells(n + 7, 8)
'Cotation (F,G et S)
Sheets("Bilan_AES").Cells(compt + 10, 9) = Sheets("AES").Cells(n + 7, 9)
Sheets("Bilan_AES").Cells(compt + 10, 10) = Sheets("AES").Cells(n + 7, 10)
Sheets("Bilan_AES").Cells(compt + 10, 11) = Sheets("AES").Cells(n + 7, 11)
'Copier formule de nombre à cotation
Sheets("Bilan_AES").Cells(i + 11, 12) = "=(2*I" & i + 11 & ")+(3*J" & i + 11 & ")+K" & i + 11
'Moyen de prévention
Sheets("Bilan_AES").Cells(compt + 10, 13) = Sheets("AES").Cells(n + 7, 13)
'Cotation M
Sheets("Bilan_AES").Cells(compt + 10, 14) = Sheets("AES").Cells(n + 7, 14)
'Copier formule de nombre à impact significatif
Sheets("Bilan_AES").Cells(i + 11, 15) = "=L" & i + 11 & "*N" & i + 11
'Formule action à faire ou pas
'=SI(H8="Oui";"Oui";SI(O8>=108;"Oui";"Non"))
Sheets("Bilan_AES").Cells(i + 11, 16).Formula = "=IF(H" & i + 8 & "=""Oui"",""Oui"",IF(O" & i + 8 & ">=45,""Oui"",""Non""))"
'Action à mettre en place
Sheets("Bilan_AES").Cells(compt + 10, 17) = Sheets("AES").Cells(n + 7, 17)
compt = compt + 1
End If
n = n + 1
Wend
End If
'Aller sur la feuille active
Sheets("Bilan_AES").Activate
End Sub
Même avec le "oui" le code ne fonctionne pas
De plus "ça ne marche pas.." ... Ben .. ça ne nous permet pas vraiment de t'aider... Faudrait être un peu plus précis...
Mais la boucle n'a pas l'air de fonctionner, elle ne colle pas les lignes dont j'ai besoin.
En gros ma macro sert à partir d'un tableau remplis (qui sera différent pour chaque personne) faire un copier coller des lignes possédant un Oui sur une certain colonne dans une autre feuille tout en gardant les 2 tableaux.
Est ce que j'ai été assez explicite ?
La boucle, c'est
While Sheets("AES").Cells(n + 8, 1) <> ""Donc, en mode pas à pas .. rentre tu dans la boucle ?
Tant qu'il y a des lignes dans la feuille AES faire la boucle et copier/coller les lignes contenant "oui" sur la colonne 8 dans la feuille Bilan AES