Modifier contenu cellule sur multicriteres

CharlesX

XLDnaute Nouveau
Bonjour,

Comme beaucoup de personnes dont j'ai vus les posts, je dirais que je bidouille en vba sans comprendre tout ce que je fais.
Par avance, merci aux gentilles et compétentes personnes qui me répondront.

Mon fichier:
5 colonnes de qui peuvent avoir les valeurs "oui, non ou non pertinent"

Si Ax = non, alors Bx,Cx et Dx seront à non pertinent

Si Ax et Bx = oui, alors Cx et Dx seront à non pertinent et si on peut en même temps faire ouvrir un autre fichier ça serait sympa.

Si Cx = oui, alors Dx = non
Si Cx= non, alors Dx=oui

et/ou inversement

Si Dx = oui, alors Cx = non
Si Dx= non, alors Cx=oui

Le but du fichier est d'automatiser au maximum du batonnage en lançant la macro après chaque fin de saisie de la ligne.
Cette macro remplirait les cellules en fonctions des conditions décrites ci-dessus pour aller ensuite en début de prochaine ligne.
J'ai déjà la partie retour à la ligne.

Je ne connais la mise en forme des boucles si et for ou d'autres fonctions qui permettraient de faire tout ça.
A vo't bon cœur m'sieurs dames

Cdt
 

vgendron

XLDnaute Barbatruc
Re : Modifier contenu cellule sur multicriteres

Hello et bienvenue sur ce forum

pour qu'on y voit plus clair, il faudrait que tu postes un fichier exemple qui reprend ta structure avec quelques données exemples:
données d'entrée , et de sortie telles qu'attendues..

c'est d'autant plus important que déjà. en lisant tes deux premières "conditions", je vois un souci:

Si Ax = non, alors Bx,Cx et Dx seront à non pertinent
je comprend que tu saisis à la main la colonne A: et les colonnes BCD sont remplies automatiquement (par formule)

sauf que juste après:
Si Ax et Bx = oui, alors Cx et Dx seront à non pertinent et si on peut en même temps faire ouvrir un autre fichier ça serait sympa.
ici. on voit que finalement, la colonne B est aussi saisie à la main..
 

CharlesX

XLDnaute Nouveau
Re : Modifier contenu cellule sur multicriteres

Bonjour,

Effectivement, je souhaiterais que les cellules des colonnes B,C et D se remplissent soit automatiquement soit manuellement.

En pj le fichier sans l'automatisation.
Le but de ce fichier et de récolter des données en faisant du batonnage pour ensuite analyser tout ça dans un tableau croisé dynamique.
Je voulais automatiser le remplissage de certaines cellules pour faciliter la saisie
Le bouton du haut permet de retourner à la ligne pour effectuer une nouvelle saisie et je voulais m'en servir également pour lancer la macro qui remplirait les cellules laissées vides. Si A = Non, on ne remplit pas B,C et D à la main,, c'est la macro qui s'en charge avec clic sur le bouton "poursuivre la saisie".

Merci de votre aide.
Cdt
 

Pièces jointes

  • Essai.xlsm
    61.4 KB · Affichages: 46
  • Essai.xlsm
    61.4 KB · Affichages: 46

vgendron

XLDnaute Barbatruc
Re : Modifier contenu cellule sur multicriteres

Re,

Regarde le code dans la pj (Alt+F11 pour ouvrir l'editeur VBA)

ca va te donner une idée de comment faire..
en fait, je ne comprend pas bien les conditions ...
 

Pièces jointes

  • Essai.xlsm
    61 KB · Affichages: 48
  • Essai.xlsm
    61 KB · Affichages: 49

CharlesX

XLDnaute Nouveau
Re : Modifier contenu cellule sur multicriteres

Bonjour

Parfait
J'ai effectivement revu les conditions mais le fichier fait maintenant ce que je souhaitais.
J'attends juste d'ajouter le code pour ouvrir ouvrir mon second fichier et quand tout sera ok je me ferai un grand plaisir de passer le post en résolu.

Merci
 

CharlesX

XLDnaute Nouveau
Re : Modifier contenu cellule sur multicriteres

Bonjour,

Ci-joint, le fichier modifié avec les conditions qui vont bien.

J'ai le code permettant soit d'ouvrir un fichier (qui n'est pas ouvert donc) et pour activer un fichier déjà ouvert.
(ajouté en commentaire).
Peut-on faire une macro avec condition: si le fichier est deja ouvert, activer le fichier, sinon l'ouvrir ? Ça pose problème si on veut ouvrir un fichier déjà ouvert.

Merci encore.
Cdt
 

Pièces jointes

  • Copie de Essai.xlsm
    64 KB · Affichages: 46
  • Copie de Essai.xlsm
    64 KB · Affichages: 71

vgendron

XLDnaute Barbatruc
Re : Modifier contenu cellule sur multicriteres

avec ceci peut etre

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Stop
        'pour éviter que la macro tourne en rond..
        Application.EnableEvents = False

         a = Target.Row
         'lancement de la macro dès qu'on change une cellule dans les 4 premières colonnes
        If Not (Intersect(Target, Range("A:D")) Is Nothing) Then

             Cells(a, 6) = Date
             Cells(a, 7) = Time

            If Cells(a, 1) = "Non" Then
                Cells(a, 2) = "Non Pertinent"
                Cells(a, 3) = "Non Pertinent"
                Cells(a, 4) = "Non Pertinent"
                Range("A1").End(xlDown).Offset(1, 0).Select
            End If

            
            If Cells(a, 1) = "Oui" And Cells(a, 2) = "Oui" Then
                Cells(a, 3) = "Non Pertinent"
                Cells(a, 4) = "Non Pertinent"
                Range("A1").End(xlDown).Offset(1, 0).Select
                
                'ficher à ouvrir et/ou activer
                'on vérifie si le classeur fait partie des classeurs ouverts
                ClasseurOuvert = False
                For Each Classeur In Workbooks
                    If Classeur.Name = "Classeur 2.xlsm" Then ClasseurOuvert = True
                Next Classeur
                
                If ClasseurOuvert Then
                    Classeur.Activate
                Else
                    ChDir "Chemin du dossier"
                    Workbooks.Open Filename:="Chemin du dossier \classeur2.xlxm"
                End If
            End If

            If Cells(a, 1) = "Oui" And Cells(a, 2) = "Non" And Cells(a, 3) = "Oui" Then
                Cells(a, 4) = "Non Pertinent"
                Range("A1").End(xlDown).Offset(1, 0).Select
                
            End If
            
             If Cells(a, 1) = "Oui" And Cells(a, 2) = "Non" And Cells(a, 3) = "Non Pertinent" Then
                Cells(a, 4) = "Oui"
                Range("A1").End(xlDown).Offset(1, 0).Select
                
            End If

            If Cells(a, 1) = "Oui" And Cells(a, 2) = "Non" And Cells(a, 4) = "Oui" Then
                Cells(a, 3) = "Non Pertinent"
                Range("A1").End(xlDown).Offset(1, 0).Select
                
            End If

        End If
    Application.EnableEvents = True
End Sub
 

CharlesX

XLDnaute Nouveau
Re : Modifier contenu cellule sur multicriteres

Bonjour

Au poil.
J'ai juste corrigé pour avoir

If ClasseurOuvert Then
Windows("Classeur2.xlsm").Activate

à la place de Classeur.activate

C'est la première fois que je passe par des forums pour ce genre de choses et je suis tres agreablement surpris.
Merci beaucoup.
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16