Coller un tableau en enlevant les cellules vides dynamique
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici en PJ un tableau dont les colonnes se remplissent automatiquement : si 40 repas, alors 2 étiquettes de 18 barquettes (le max) et une de 4 barquettes sont générées. Les données sont générées de manière fictive pour créer un cadre qui ressemble au mien.
Avant de les imprimer, je voudrais créer un tableau en les concaténant de manière à ce que toutes les étiquettes crées forment une matrice sans blanc.
Je n'arrive ni à le coder avec des boucles IF ou LOOKUP, et mon niveau en VBA ne me permet pas de créer cela... Je suis bloqué car j'ai l'impression que les conditions s'ajoutent géométriquement.
J'espère que j'aurais correctement décris le soucis et qu'il saura générer de brillantes idées de votre côté.
Cordialement.
Macintosh / Chrome 105.0.0.0
- Coller un tableau en enlevant les cellules vides dynamique
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Trier un tableau excel - Guide
- Tableau ascii - Guide
4 réponses
Bonjour
Pour avoir une aide il faut joindre ton fichier, pas son image. Fichier à poster sur le site cjoint.com, faire créer un lien , le copier et revenir le coller ici.
Dans l'attente
Cdlmnt
Via
Re,
Ton fichier avec une macro pour coller sans vides en dessous
https://www.cjoint.com/c/LICs2DTNFeu
Cdlmnt
Via
Il suffit d'adapter les n)s de lignes et de colonnes
macro avec explications :
Sub sansvides() xr = 47 ' ligne avant celle où recopier en premier yr = 2 ' colonne où recopier en premier For y = 2 To 6 'boucle sur les colonnes de 2 à 6 For x = 17 To 46 ' boucle sur les lignes de 17 à 46 If Cells(x, y) <> "" Then ' si cellule non vide xr = xr + 1 ' on incrémente la ligne de recopie de 1 Cells(xr, yr) = Cells(x, y) ' on remplit la cellule avec le contenu de celle du premier tableau If xr = 77 Then xr = 47: yr = yr + 1 ' lorsque on atteint la igne 77 on revient à la ligne 47 et on incrémente de 1 la colonne de recopie If yr = 7 Then yr = 8 ' si n° de col = 7 on passe à la colonne 8 (colonne d'espace) End If Next Next For y = 8 To 12 For x = 17 To 46 If Cells(x, y) <> "" Then xr = xr + 1 Cells(xr, yr) = Cells(x, y) If xr = 77 Then xr = 47: yr = yr + 1 If yr = 7 Then yr = 8 End If Next Next For y = 17 To 18 For x = 17 To 46 If Cells(x, y) <> "" Then xr = xr + 1 Cells(xr, yr) = Cells(x, y) If xr = 77 Then xr = 47: yr = yr + 1 If yr = 7 Then yr = 8 End If Next Next End Sub
Rebonjour Via55,
Merci encore de ce code que j'ai remis ici :
xr = 16 ' ligne avant celle où recopier en premier
yr = 20 ' colonne où recopier en premier
For y = 2 To 6 'boucle sur les colonnes de 2 à 6
For x = 17 To 46 ' boucle sur les lignes de 17 à 46
If Cells(x, y) <> "" Then ' si cellule non vide
xr = xr + 1 ' on incrémente la ligne de recopie de 1
Cells(xr, yr) = Cells(x, y) ' on remplit la cellule avec le contenu de celle du premier tableau
If xr = 46 Then xr = 16: yr = yr + 1 ' lorsque on atteint la igne 46 on revient à la ligne 16 et on incrémente de 1 la colonne de recopie
End If
Next
Next
For y = 2 To 6
For x = 50 To 79
If Cells(x, y) <> "" Then
xr = xr + 1
Cells(xr, yr) = Cells(x, y)
If xr = 46 Then xr = 16: yr = yr + 1
End If
Next
Next
End Sub
J'aimerais aussi coller la mise en forme du premier tableau dans le deuxième :
J'ai essayé cette commande mais sans résultats, aurais-tu une idée pour résoudre ça ?
.PasteSpecial Paste:=xlFormats
Merci beaucoup, bonne journée
https://cjoint.com/c/LIConVcYvY0
voici le lien, désolé c'est ma première fois