Probleme Code fonction While et if

Fermé
Marg12 - Modifié le 10 févr. 2021 à 08:50
 Marg12 - 17 févr. 2021 à 17:01
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 :
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:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 févr. 2021 à 08:53
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
 If Sheets("AES").Cells(compt + 7, 8) = "Oui" Then

0
Merci pour la précision des balises je ne connaissais pas.

Même avec le "oui" le code ne fonctionne pas
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Marg12
10 févr. 2021 à 09:31
As tu essayé de le faire en mode pas à pas pour voir ce qu'il fait ?
De plus "ça ne marche pas.." ... Ben .. ça ne nous permet pas vraiment de t'aider... Faudrait être un peu plus précis...
0
Marg12 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
10 févr. 2021 à 09:44
Tout fonctionne correctement quand j'effectue le pas à pas.
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 ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Marg12
Modifié le 10 févr. 2021 à 09:54
Mais la boucle n'a pas l'air de fonctionner,

La boucle, c'est
   While Sheets("AES").Cells(n + 8, 1) <> ""

Donc, en mode pas à pas .. rentre tu dans la boucle ?
0
Marg12 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
10 févr. 2021 à 09:58
Oui,
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
0
Bonjour,

Pouvez vous m'aider s'il vous plait ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 févr. 2021 à 16:27
Qu'est-ce qui te manque désormais ?
Tu as remis l'incrémentation de ta variable compt dans ton IF ou pas ?

Montres nous ici ton code modifié ( en utilisant les balises de code )
0
Marg12 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 17 févr. 2021 à 16:45
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

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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Marg12
17 févr. 2021 à 16:46
C'est normal que tu essaies de récupérer les données qui se trouvent à la ligne n + 7
Alors que la vérification du oui se fait sur la ligne n+8 ?
0
Marg12 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 17 févr. 2021 à 17:01
Non ce n'etait pas normal et c'etait ça l'erreur merci beaucoup pour toute votre aide vraiment c'est super gentil...
0
Marg12 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
17 févr. 2021 à 17:01
Merci pour votre patience et votre aide
0