Problème Code VBA et formules

Loisel

XLDnaute Nouveau
Bonjour le forum,

Grâce à l'aide de l'un de vous, j'ai pu mettre en forme le code vba dans le fichier joint.

Mais lors du lancement de la macro instruction, si les conditions sont respectées, à l'inverse les données saisies dans les colonnes désignées sont systématiquement supprimées.

Ce que je voudrais : c'est avoir simultanément la recherche des conditions inscrites dans la macro tout en conservant les données existantes dans tous les autres cas.

Vous trouverez dans le fichier 2 onglets : l'un tab sur lequel agit la macro et l'autre tableau souhaité.

Quelqu'un parmi vous pourrait-il m'apporter de l'aide à nouveau ?
 

Pièces jointes

  • code vba.xlsm
    46.5 KB · Affichages: 53
  • code vba.xlsm
    46.5 KB · Affichages: 61
  • code vba.xlsm
    46.5 KB · Affichages: 60
Dernière édition:

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Bonjour Si, bonjour à tous

J'ai un problème avec la macro Sub MAJ1( )
Dès la ligne Set P = .Range ("AE:AE" & D1)
Il bloque sur D1 indiquant : erreur de compilation Variable non définie.
Pourtant j'ai bien indiqué dés les premières lignes D1 dans Option Explicit comme indiqué ?
 

Si...

XLDnaute Barbatruc
Re : Problème Code VBA et formules

salut

@ gosselien :D, je crois que cela vient d'ailleurs.
@ Loisel :D, avec ce message d'erreur, ou la variable n'est pas déclarée ou mal utilisée (réinjectée) dans le code.

Ici, à première vue, tu déclares D1 au ieu du Dl qui est utilisé dans le code ou l'inverse.
Avec
Dim D1... tu dois prendre dans la macro D1
Dim Dl... tu dois prendre dans la macro Dl
Regarde les longueurs de ces 2 lignes ;).
 

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Bonsoir à tous les deux

Oups !! Et non je n'ai pas fait de copier/coller :eek:
Et en effet, je vous confirme que j'ai bien confondu le "I" et le "1" :eek:
Je vous rassure, j'ai corrigé mais quelques bugs subsistent encore :confused:

Code:
Sub EXTRA()
 Dim NDF As String, rep As String

 Application.ScreenUpdating = False
 With Sheets("tab")
     Set bdd = .Cells(1, 1).Resize(Application.CountA(.[B:B]), Application.CountA(.[1:1]))
  End With

 With ActiveWorkbook.Worksheets("INTER CG")
bdd.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.[FormuleA], CopyToRange:=.[Extraire], Unique:=False
 .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=.Range("E8"), _
 .........

bdd = plage nommé dans la feuille "tab" et le code de Si reprend parfaitement celle-ci dans son code.
J'ai repris cette plage pour définir le filtre élaboré dans le feuille "INTER CG" qui comprend quant à elle 2 autres plages nommées : l'une pour les critères = [FormuleA], l'autre pour l'extraction = [Extraire]

J'ai mis après l'appel de cette routine End With pour repartir sur ma ligne
With ActiveWorkbook.Worksheets("INTER CG")
Mais là, gros problème il ne reconnait plus ma formule de filtre elaboré :confused::confused:
Erreur d'exécution 1004
Nom de champ introuvable ou incorrect dans le champ d'extraction

pourtant toujours présent, j'ai vérifié, dans ma feuille INTER CG :confused:
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Problème Code VBA et formules

re

ton fichier n'est pas assez représentatif (feuilles, noms ...) donc je ne peux t'aider davantage sinon en te disant que pour trier une plage, il faut la citer :
Code:
La Plage.Sort [cellule de critère] , 1, Header:= 1]
avec 1 pour l'ordre croissant et 2 pour l'autre, en ne touchant pas le titre.
 

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Re,

Je comprends. Il est vrai que mon fichier ici n'est que partiel car trop lourd :eek:
Ce n'est pas grave, les deux macro séparées fonctionnent.
Je vais donc laisser tomber l'idée de les associer sinon je vais devoir revoir l'ensemble de la seconde, annuler mes plages nommées (gestionnaire de noms) et surtout mes filtres élaborés qui me sont indispensables :(
Merci beaucoup, Si... , pour ton aide.
 

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Bonjour Si....., bonjour Gosselien

re:D
Pour mieux comprendre je te propose d'utiliser l'Enregistreur de Macros : tu auras des messages d'alerte en cas de mauvaises manipulations (du genre, ... pas dans une autre feuille).

J'ai repris un extrait de ma macro et de ses éléments constitutifs dans la pièce jointe.
Le fichier d'origine est bien trop lourd :eek:
Je suis certaine que tu comprendras bien mieux que moi là l'origine des erreurs lorsque l'on associe les deux formules :confused::confused:
 

Pièces jointes

  • formules VBA 3B.xlsm
    46.8 KB · Affichages: 38
Dernière édition:

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Bonjour à vous deux,

Je reviens vers vous pour savoir si vous avez réussi, là où j'échoue continuellement malgré mes efforts de tout mettre bout à bout.
Sacrées macros ! :confused:

Si jamais vous avez des idées, vous pensez à moi s'il vous plait.:eek:

Bonne soirée à vous deux
 

JCGL

XLDnaute Barbatruc
Re : Problème Code VBA et formules

Bonjour à tous,

Je prends la discussion en route...

Peux-tu essyer dans le Module1 :

VB:
Dim Ftab As Worksheet, DL As Long, DC As Long, Bdd As Range    'ici pour garder les valueurs dans les 2 macros
Dim NDF As String, rep As String


Sub EXTRA()
    Set Ftab = Worksheets("tab")
    Application.ScreenUpdating = False
    DL = Cells(Rows.Count, 1).End(xlUp).Row 'dernière ligne
    DC = Cells(1, Columns.Count).End(xlToLeft).Column    'dernière colonne
    With Ftab
        Set Bdd = .[A1].Resize(DL, DC)    'plage de référence
        Call MAJ1    'appel de cette routine
        'suite
    End With
End Sub
Sub MAJ1()
    Dim P As Range
    With Bdd
        On Error Resume Next
        .Cells.SpecialCells(xlCellTypeFormulas) = ""
        'cas 1
        Set P = .Range("AE2:AE" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""Inter"",RC6=""t/s"",RC6=""liens"",RC6=""cdr"")),""wwww"","""")"
        'cas 2
        Set P = .Range("AF2:AF" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""Inter"",RC6=""t/s"",RC6=""liens"")),""wwww"","""")"
        'cas 3
        Set P = .Range("AG2:AH" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""Inter"",RC6=""t/s"",RC6=""brun"",RC6=""cdr"")),""wwww"","""")"
        Set P = .Range("AL2:AL" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""Inter"",RC6=""t/s"",RC6=""brun"",RC6=""cdr"")),""wwww"","""")"
        'cas 4
        Set P = .Range("AI2:AI" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""Inter"",RC6=""t/s"",RC6=""brun"",RC6=""liens"",RC6=""cdr"")),""wwww"","""")"
        'cas 5
        Set P = .Range("AJ2:AK" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""brun"",RC6=""cdr"")),""wwww"","""")"
        Set P = .Range("AM2:AM" & DL)
        P.SpecialCells(4).FormulaR1C1 = _
        "=IF(AND(RC8=""agence"",OR(RC6=""brun"",RC6=""cdr"")),""wwww"","""")"
    End With
End Sub

A+ à tous
 

Si...

XLDnaute Barbatruc
Re : Problème Code VBA et formules

salut

@ JCGL :D : j'ai cru comprendre que le problème venait d'ailleurs (Filtrer et copier certaines colonnes dans un ordre particulier ; mais je me trompe peut-être.

@ Loisel :D: tu veux filtrer ? Je ne sais pas comment tu t'y prends.

Avec ce que j'ai cru comprendre : une macro pour le faire.
J'ai choisi de passer par l'outil Tableau et j'ai ajouté des liste de validation (on ne sait jamais ;)).

Pour la sauvegarde c'est une autre histoire ... pour laquelle je n'interviendrai pas.
 

Pièces jointes

  • formules VBA 3.xlsm
    51.4 KB · Affichages: 22

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Bonjour à tous,

Je viens juste de prendre connaissance du message de Si....

A la lecture de celui de JCGL et ne sachant plus où j'en étais après toutes ces modifications, j'ai tout remis à plat.

J'ai ainsi pu constater en appelant les macro successivement que c'était la macro MAJ1 qui ne jouait plus son office.
Si celle inclut directement sur la feuille tab, celle du module pour laquelle j'ai remplacé pour l'occasion les "www" par des "uuu" ne fonctionnait pas.

Je ne peux pas récupérer le fichier de Si.... donc je ne pourrais en prendre connaissance que ce soir.

Merci encore pour le temps que vous prenez pour moi et désolé de vous ennuyer avec des difficultés toutes personnelles.
 

Loisel

XLDnaute Nouveau
Re : Problème Code VBA et formules

Re,

salut
@ JCGL :D : j'ai cru comprendre que le problème venait d'ailleurs (Filtrer et copier certaines colonnes dans un ordre particulier ; mais je me trompe peut-être.

@ Loisel :D: tu veux filtrer ? Je ne sais pas comment tu t'y prends.
Avec ce que j'ai cru comprendre : une macro pour le faire.
J'ai choisi de passer par l'outil Tableau et j'ai ajouté des liste de validation (on ne sait jamais ;)).
Pour la sauvegarde c'est une autre histoire ... pour laquelle je n'interviendrai pas.

@ Si.... : mon problème ne se situe ni sur mes filtres ni sur la sauvegarde de ceux-ci, pas plus que sur les tris. La macro sur mon fichier fonctionne correctement pour ces différents points. :)

Ma difficulté consistait à associer la macro MAJ1 inscrite sur la feuil Tab qui s'exécute par clic et la mienne qui se lance depuis le module et produit filtres / tris / sauvegarde et copie dans un nouveau fichier.
Et c'est cette association ou "fusion" des 2 macros qui ne fonctionnent pas. :confused:

Je voulais que MAJ1 ne se lance pas par un clic mais automatiquement
: à l'ouverture du fichier par exemple, ou en la fusionnant à une macro existante ou toute autre possibilité dès l'instant où il n'y a pas d'intervention sur un bouton :eek:

Je vous renouvelle Si..., Gosselien, JCGL .... tous mes remerciements pour votre aide.
Cette partie de mes difficultés n'aboutira pas mais j'ai énormément appris grâce à vous tous. :)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 242
Messages
2 086 528
Membres
103 243
dernier inscrit
SAH