Report de lignes
Bonjour,
Je ne trouve pas la solution répondant précisément à mon objectif.
Je souhaite automatiquement alimenter un onglet qui récupère des informations situées dans 2 autres onglet de la même feuille. Sur un onglet, il s'agit de récupérer certaines lignes, sur l'autre toutes les lignes.
Je connais la recherchev ou h, mais elles me semblent inapplicables ici, du moins la base de cette formule que je connais un peu.
Ci-joint un exemple avec quelques commentaires qui devraient être assez clairs
Merci pour votre aide
Damien
Bonsoir,
Sub récap()
Dim récap() As String, n%, i%, p%
With Worksheets("BDD1")
n = .Cells(.Rows.Count, 5).End(xlUp).Row
For i = 2 To n
If .Cells(i, 5) = "3 - Exemple" Or .Cells(i, 5) = "9 - Exemple" Then
ReDim Preserve récap(p)
récap(p) = "'BDD1'!" & .Range("A" & i).Resize(, 6).Address
p = p + 1
End If
Next i
End With
With Worksheets("BDD2")
n = .Cells(.Rows.Count, 5).End(xlUp).Row
ReDim Preserve récap(p)
récap(p) = "'BDD2'!" & .Range("A2").Resize(n - 1, 6).Address
End With
With Worksheets("Récap dates réunion")
Application.ScreenUpdating = False
.Range("A1").CurrentRegion.Offset(1).Clear
For i = 0 To p
Range(récap(i)).Copy .Cells(i + 2, 1)
Next i
End With
End SubCordialement.
Merci pour cette proposition rapide. Je n’ai pas le niveau pour comprendre ce code. J’en déduis que par des formules « basiques » ce n’est pas possible. Je vais regarder attentivement demain pour essayer de comprendre pour le refaire sur le « vrai » fichier.
Merci
++
Bonsoir,
Ton modèle impliquait un report de la mise en forme de la plage source, ce que ne fait aucune formule.
Ceci dit, opérer avec formule pour la BDD1, c'est une formule matricielle relativement commune désormais pour extraire des valeurs d'une plage en fonction de critères... Là où ça se compliquait, c'est que si dans la formule évoquée pour BDD1, on se contente d'un SIERREUR pour qu'elle n'affiche plus rien quand les lignes correspondant aux critères sont épuisées, ici il aurait fallu embrayer sur BDD2, rien d'insurmontable mais tout de même un peu lourd... et qui aurait mérité qu'on se pose la question Formules ou VBA ?
Avec la mise en forme, la question ne me semblait pas se poser... !
La procédure est fort simple : on parcourt BDD1 à la recherche des critères, et quand on en trouve un, on stocke l'adresse de la plage-ligne dans un tableau (dynamique, qu'on fait grandir au fur et à mesure). Quand on a terminé sur BDD1 on passe à BDD2 où l'on dimensionne la plage totale pour en consigner l'adresse en dernier élément de notre tableau. Puis sur Récap on n'a plus qu'à supprimer l'existant, formats compris, sauf l'en-tête, faire une boucle sur nos adresses de plages pour les copier et coller tour à tour ligne après ligne (la seule multilignes étant la dernière...)
Cordialement.
Merci pour tes explications, je ne code pas en VBA, tout court en fait, mais j'arrive à comprendre le cheminement entre ton texte et le code. Mais je m'y perds malgré tout sur les "n", "i", et "p". Donc malgré quelques tentatives et tatonnement, je n'arrive pas à transposer cette méthode au "vrai" tableau qui diffère un peu. J'arrive à récupérer BDD2 mais pas l'autre.... Et pour le côté pratique je n'arrive même pas à trouver comment ajouter le bouton macro
Si j'oublie la mise en forme, la méthode serait plus accessible ? J'ai tenté avec un TCD multi plages, ça semble ne pas être fait pour ça.
Merci !
Bonsoir,
Il s'agit de variables, au cas particulier de type Integer, soit nombre entier compris de -32768 à 32767. Généralement on se contente du type Integer tant qu'on reste sur des nombre relativement réduits, dès qu'on atteint quelques milliers on passe souvent au type Long...
On a besoin de variables numériques pour : détecter la dernière ligne utilisée (ici c'est n qui sert à ça), parcourir ces lignes de 2 à n (c'est i qui joue ce rôle de compteur de boucle), et p nous sert à incrémenter le tableau des adresses recueillies.
Je conçois que si l'on n'est pas familier de VBA on puisse patauger un peu dans ces différents composants, mais c'est tout compte fait plus facile à réaliser que des formules, surtout des matricielles !
Ici on reste sur un raisonnement qui évoque l'école maternelle et ses jeux avec des formes, des couleurs, des gommettes, des bûchettes...
On compte des lignes, on les parcours, on retient celles qui intéressent selon certaines caractéristiques, on en range des copies (le moyen de les copier) sur un support provisoire pour aller ensuite en garnir un autre emplacement...
Si ton "vrai" tableau est sur le même modèle structurel, à paramètres identiques (tableaux commençant en A1, en-têtes en ligne 1, 6 colonnes) : rien à adapter ! tout au plus les noms de feuilles si tu n'as pas les mêmes, mais c'est pas très compliqué. Evidemment, si tu soumets un tableau dont la structure n'est pas la même, tu auras quelques adaptations... mais il fallait alors suivre les recommandations, respecter la sturcture des données, disposition, type... de façon à s'y retrouver exactement ensuite.
Les boutons : tu ouvres l'onglet Développeur, Insérer (la première catégorie sont les boutons dits de formulaire), tu mets un intitulé, tu cliques droit, Affecter une macro et tu l'affectes, valides et c'est fait.
Tu peux aussi utiliser n'importe quelle forme dans les mêmes conditions (Onglet Insertion, Formes...) pour attacher une macro à une forme.
Cordialement.
J'ai fini par réussir, c'était le décalage de colonne et ligne à reprendre et le nom des onglets. Encore merci !