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

tontonced

XLDnaute Nouveau
Hello à tous,

J'ai une ptit souci que je n'arrive pas à résoudre. En fait j'ai mis une formule qui va de B3 à B1300 car quelquefois mes fichiers font 1300 lignes à peu près. Le problème c'est que ça alourdi mon fichier. Je m'explique :
Mes formules se base sur ma cellule A et même si je n'es que 2 lignes (A3 et A4 par exemple) les formules se colleront quand meme de b3 à b1300. J'aimerais que lorsque je n'ai que deux lignes il ne me mettes les formules que de B3 à B4. Voici une de mes nombreuses formules en vba

Code:
Range("B3.B1300").FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(R1C1&RC[-1],INVMUL!C[-1]:C[31],33,FALSE)),"""",VLOOKUP(R1C1&RC[-1],INVMUL!C[-1]:C[31],33,FALSE))"

Merci d'avance

cdt
 
Re : Formule excel VBA

Bonsoir

Je ne suis pas sur de ce que tu cherches à faire
Mais avec ce que j'ai compris, j'utiliserai le filtre automatique
Code:
Sub Macro1()
Dim Filtre As Range
Range("A1:A1300").AutoFilter Field:=1, Criteria1:="<>"
Set Filtre = [_FilterDataBase]
Filtre.Offset(1, 0).Resize(Filtre.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Offset(, 1).FormulaR1C1 = "=RC[4]&TRIM(RC[7])&TRIM(RC[6])"
ActiveSheet.AutoFilterMode = False
End Sub

Ceci est l'équivalent de la macro MISE_EN_FORME du message#14
 
Re : Formule excel VBA

Je viens de me relire et en fait j'ai mélanger mes des question dans de fichiers différents. Donc on va recommencer.

1er fichier : celui ou je t'ai envoyer plusieurs onglets. J'ai besoin de faire une comparaison entre deux fichiers et voir s'il n'y a pas de différence entre les deux.

Le souci c'est j'ai que dans mon userform, j'intègre un fichier selon des conditions...
Quand je l'intègre il me met le nom entier du fichier (ex : le fichier s'appele xxx123456) lorsqu'il s'intègre via le userform il me le nom xxx123456. Moi ce que j'ai besoin c'est que par exemple je voudrais que lorsqu'il s'affiche il s'affiche xxx et par exemple la cellule a2 du fichier que j'intègre au lieu du nom entier. j'ai réussi en parti à le faire. en faisant le code suivant

Code:
Private Sub UserForm_Initialize()
Dim c As Workbook 'déclare la variable o (Classeur)

For Each c In Workbooks 'boucle sur tous les claeeurs ouverts
    'alimente la ListBox1 du nom des classeurs ouverts sauf le nom de ce classeur et "PERSO.XLS"
    If Left(c.Name, 6) = "hisinv" Then Me.ListBox1.AddItem c.Name
Next c 'prochain classeur ouvert de la boucle
End Sub

avec ce code si le fichier commence par hisinv il va m'intégrer comme nom hisinv123456789 alors que je voudrais qu'il me montre hisinv + une cellule du fichier.

Donc comment faire?

et de deux quand je le fait lorsque je clique sur ok. le fichier se colle dans un autre onglet mais là çà bloque à ce niveau "Set cs = Workbooks(.List(x))". Je ne comprend ce que fait cette ligne en fait...

Code:
Private Sub OK_Click()
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim x As Integer 'déclare la variable x (incrément)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Object 'déclare la variable os (Onglet Source)

Set cc = ThisWorkbook 'définit le classeur cible
Set oc = cc.Sheets("HISINV") 'définit l'onglet cible
With Me.ListBox1 'prend en compte la ListBox1
    For x = 0 To .ListCount - 1 'boucle sur tous les éléments de la ListBox1
        If .Selected(x) = True Then 'condition : si l'élément est sélectionné
            'définit la cellule de destination (A1 de l'onglet cible si A1 est vide, sinon la première cellule vide de la colonne A)
            Set dest = IIf(oc.Range("B2") = "", oc.Range("B2"), oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
            Set cs = Workbooks(.List(x)) 'définit le classeur source
            Set os = cs.Sheets(1) 'définit l'onglet source
            os.UsedRange.Copy dest 'copie la plage des cellules éditées de l'onglet source et la copie dans dest
        End If 'fin de la condition
    Next x 'prochain élément séolectionné de la boucle
End With 'fin de la prise en compte de la ListBox1
Unload Me 'vide et ferme l'Userform
oc.Activate 'sélectionne l'onglet cible
Sheets("Feuil1").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

Discussions similaires

  • Question Question
Microsoft 365 Formule Excel
Réponses
4
Affichages
270
Réponses
5
Affichages
705
Réponses
4
Affichages
812
Réponses
4
Affichages
671
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Retour